📜  将字符串转换为枚举类型 - C# (1)

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

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

在C#中,枚举类型(enums)是一种非常有用的数据类型,它定义了一组具有名字的值。有时候需要将一个字符串转换为一个枚举类型,以便在代码中使用这个枚举值。下面是一些方法来实现这个目标。

方法一:Parse

C#提供了一个内置的Parse方法,允许将一个字符串转换为一个枚举类型。下面是一个示例代码:

public enum DayOfWeek
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

string day = "Tuesday";
DayOfWeek enumValue = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), day);

在这个例子中,我们将字符串“Tuesday”转换成了DayOfWeek枚举值。需要注意的是,这个方法将会抛出一个异常如果字符串不能被转换成这个枚举类型。

方法二:TryParse

有时候,你可能需要避免异常的产生,为此,C#也提供了一个TryParse方法。如果这个字符串不能被转换为这个枚举值,这个方法将会返回false。下面是一个示例代码:

public enum DayOfWeek
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

string day = "Tuesday";
DayOfWeek enumValue;
if (Enum.TryParse<DayOfWeek>(day, out enumValue))
{
    // 转换成功了
}
else
{
    // 转换失败了
}
方法三:扩展方法

如果你经常需要将字符串转换为枚举值,你可以创建一个扩展方法使这个过程更加方便。下面是一个示例代码:

public static class EnumExtensions
{
    public static T ToEnum<T>(this string value) where T : struct
    {
        if (!Enum.TryParse<T>(value, true, out T result))
        {
            throw new ArgumentException("无效的枚举值");
        }
        return result;
    }
}

public enum DayOfWeek
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

string day = "Tuesday";
DayOfWeek enumValue = day.ToEnum<DayOfWeek>();

在这个例子中,我们创建了一个名为ToEnum的扩展方法,使得我们可以直接调用字符串的ToEnum方法来转换成枚举类型。需要注意的是,这个方法也有可能会抛出一个异常如果字符串不能被转换成这个枚举类型。

结论

在C#中,将字符串转换成枚举类型是一个非常普通的任务。通过使用内置的方法或者扩展方法,我们可以很容易地完成这个过程。如果你需要在你的应用程序中频繁地执行这个操作,你可以将它包装在一个扩展方法中便于使用。