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

Minahil Noor 2023年10月12日
  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