📅  最后修改于: 2023-12-03 15:13:53.734000             🧑  作者: Mango
枚举类型是C#中一种非常有用的数据类型,它可以将一组常量值绑定到一个类型中。在许多情况下,我们需要将一个字符串转换为对应的枚举类型。在本文中,我们将介绍如何将字符串转换为枚举类型。
C#中提供了一个名为Enum.Parse的方法,它可以将字符串转换为对应的枚举类型。它接受两个参数:第一个参数是要转换为的枚举类型,第二个参数是要转换的字符串。以下是一个示例:
enum Gender
{
Male,
Female
}
...
Gender gender = (Gender)Enum.Parse(typeof(Gender), "Male");
在上面的示例中,我们定义了一个Gender枚举类型,然后使用Enum.Parse方法将字符串"Male"转换为枚举类型。注意,在使用Enum.Parse方法时,我们需要将第一个参数传递给typeof(Gender)来获取Gender类型的Type对象。
虽然Enum.Parse方法可以将字符串转换为枚举类型,但如果字符串不是有效的枚举值,它将抛出一个异常。为了避免这种情况,我们可以使用Enum.TryParse方法。Enum.TryParse方法接受三个参数:第一个参数是要转换为的枚举类型,第二个参数是要转换的字符串,第三个参数是一个名为result的out参数。以下是一个示例:
enum Gender
{
Male,
Female
}
...
Gender gender;
if (Enum.TryParse("Male", out gender))
{
// 转换成功
}
在上面的示例中,我们定义了一个Gender枚举类型,然后使用Enum.TryParse方法将字符串"Male"转换为枚举类型。如果转换成功,将Gender枚举值赋给gender变量。
如果我们需要经常将字符串转换为枚举类型,我们可以编写一个扩展方法来简化代码。以下是一个示例:
public static class EnumExtensions
{
public static T ToEnum<T>(this string value, T defaultValue) where T : struct
{
T result;
return Enum.TryParse(value, out result) ? result : defaultValue;
}
}
enum Gender
{
Male,
Female
}
...
Gender gender = "Male".ToEnum(Gender.Male);
在上面的示例中,我们定义了一个名为EnumExtensions的静态类,里面包含一个名为ToEnum的扩展方法。该方法接受两个参数:一个字符串和一个默认值。它首先使用Enum.TryParse方法将字符串转换为枚举类型。如果转换成功,它将枚举值返回。否则,它将返回默认值。
将字符串转换为枚举类型是C#中非常实用的功能。我们可以使用Enum.Parse方法或Enum.TryParse方法来完成转换。如果需要经常执行此操作,则可以编写一个扩展方法来简化代码。