📜  C#:将字符串转换为枚举对象 - C# (1)

📅  最后修改于: 2023-12-03 15:13:53.734000             🧑  作者: Mango

C#: 将字符串转换为枚举对象

枚举类型是C#中一种非常有用的数据类型,它可以将一组常量值绑定到一个类型中。在许多情况下,我们需要将一个字符串转换为对应的枚举类型。在本文中,我们将介绍如何将字符串转换为枚举类型。

使用Enum.Parse方法

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.TryParse方法

虽然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方法来完成转换。如果需要经常执行此操作,则可以编写一个扩展方法来简化代码。