C# 将字符串转换为枚举类型

Minahil Noor 2023年1月30日 2020年6月9日
  1. C# 从字符串到枚举 enum 的转换-使用 Enum.Parse()Enum.TryParse() 方法
  2. C# 使用 Enum.Parse() 方法将字符串转换为枚举的异常处理
  3. C# 使用 Enum.TryParse() 将字符串转换为枚举 enum
  4. C# 使用 Enum.IsDefined() 方法检查字符串值是否存在
  5. 结论
C# 将字符串转换为枚举类型

在 C# 中,我们使用 Enum.Parse()Enum.TryParse() 方法将字符串转换为枚举类型。这里我们都给出了示例,但是我们建议你在将字符串转换为枚举时使用 Enum.TryParse() 方法。

C# 从字符串到枚举 enum 的转换-使用 Enum.Parse()Enum.TryParse() 方法

为了将字符串转换为枚举,我们可以使用 Enum.Parse() 方法。你必须在程序文件顶部包含 System,因为 Enum.Parse() 是静态方法。

枚举类型,字符串值和指示符(可选)是此方法的参数。以下是使用 Enum.Parse()Enum.TryParse() 的正确语法:

EnumName VariableName= (EnumName)Enum.Parse(typeof(EnumName), StringValue);
EnumName VariableName= (EnumName)Enum.Parse(typeof(EnumName), StringValue,indicator); //indicator can be true or false
//To implement Enum.TryParse()
EnumName VariableName;
Enum.TryParse(StringValue, out VariableName);

现在,我们将在 C# 程序中实现此功能。

C# 使用 Enum.Parse() 将字符串转换为枚举 enum

using System;
class Conversion{
      enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      static void Main()
      {
         string stringvalue = "Rose";
         Flowers Flower = (Flowers)Enum.Parse(typeof(Flowers), stringvalue);
          //To check if we have converted successfully
         if(Flower == Flowers.Rose)
         {
            Console.WriteLine("The Flower is Rose");
         }
      }
}

输出:

The Flower is Rose

在这里,我们有一个名为 Flower 的枚举,其中包含多个常量及其各自的值。我们调用了 Enum.Parse() 方法,将字符串值 Rose 转换为枚举。typeof(Flowers) 将返回枚举类型。最后,我们检查了转换是否成功。

有时,如果我们尝试转换的字符串在枚举中不可用,则可能会发生异常。为了避免这种情况,我们将使用 try-catch 块。

C# 使用 Enum.Parse() 方法将字符串转换为枚举的异常处理

using System;

class Conversion{
      enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      static void Main()
      {
         stringvalue = "Jasmine";
         try
         {
         Flowers Flower = (Flowers)Enum.Parse(typeof(Flowers), stringvalue);
         }
         catch (Exception ex)
         {
         Console.WriteLine("Not Possible");
         //Set value to none
         Flower = Flowers.none;
         }
      }
}

输出:

Not Possible

C# 使用 Enum.TryParse() 将字符串转换为枚举 enum

using System;
enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
class Conversion
{
      static void Main()
      {
         string stringvalue = "Rose";
         //Using Enum.TryParse() 
         Flowers Flower;
         if(Enum.TryParse(stringvalue, out Flower))
         {
            Console.WriteLine(Flower == Flowers.Rose);
         }
      }
}

输出:

True

我们也可以在 Enum.TryParse() 方法中将枚举中的常量值作为参数传递。以下程序实现了这一点:

using System;

enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
class Conversion
{
      static void Main()
      {
         Flowers Flower;
         
         if(Enum.TryParse("3", out Flower))
         {
            Console.WriteLine(Flower);
         }
      }
}

输出:

Rose

你也可以使用 Enum.IsDefined() 方法检查要转换的字符串值是否在枚举中定义。

C# 使用 Enum.IsDefined() 方法检查字符串值是否存在

using System;

enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      
class Conversion{
      
      static void Main()
      {
         Console.WriteLine(Enum.IsDefined(typeof(Flowers), "Rose"));
      }
}

输出:

True

结论

Enum.Parse()Enum.TryParse() 是用于将字符串转换为枚举的方法。但是,最好是使用 Enum.TryParse()

相关文章 - Csharp String

相关文章 - Csharp Enum