📜  c# 从字符串中获取枚举值 - C# (1)

📅  最后修改于: 2023-12-03 14:39:45.046000             🧑  作者: Mango

C# 从字符串中获取枚举值

在C#中,可以通过字符串来获取对应的枚举值。本文将介绍如何在C#中实现这个功能。

方法1:使用Enum.TryParse方法

C#中的Enum类提供了TryParse方法,该方法可以将字符串转换为枚举值。下面是使用Enum.TryParse方法获取枚举值的示例代码:

string enumString = "枚举值名称";
Enum.TryParse(enumString, out EnumType enumValue);

其中,enumString是要转换的枚举值的字符串表示,EnumType是枚举类型,enumValue是转换后的枚举值。如果转换成功,enumValue将包含转换后的枚举值,否则enumValue将为默认的枚举值。

注意:在使用Enum.TryParse方法时,需要确保枚举类型是有效的。如果传入的字符串不是有效的枚举值,则转换会失败。

方法2:使用Enum.Parse方法

除了使用Enum.TryParse方法外,还可以使用Enum.Parse方法来获取枚举值。下面是使用Enum.Parse方法获取枚举值的示例代码:

string enumString = "枚举值名称";
EnumType enumValue = (EnumType)Enum.Parse(typeof(EnumType), enumString);

其中,enumString是要转换的枚举值的字符串表示,EnumType是枚举类型。通过调用Enum.Parse方法,将enumString转换为枚举类型EnumType的枚举值。

需要注意的是,在使用Enum.Parse方法时,需要确保传入的字符串是有效的枚举值,否则会抛出异常。

示例

下面是一个完整的示例,演示了如何从字符串中获取枚举值:

using System;

public enum Color
{
    Red,
    Green,
    Blue
}

class Program
{
    static void Main(string[] args)
    {
        string colorString = "Green";

        // 使用Enum.TryParse方法
        Color color;
        bool result = Enum.TryParse(colorString, out color);
        if (result)
        {
            Console.WriteLine($"Enum.TryParse方法获取的枚举值:{color}");
        }
        else
        {
            Console.WriteLine("转换失败");
        }

        // 使用Enum.Parse方法
        try
        {
            color = (Color)Enum.Parse(typeof(Color), colorString);
            Console.WriteLine($"Enum.Parse方法获取的枚举值:{color}");
        }
        catch (Exception ex)
        {
            Console.WriteLine("转换失败:" + ex.Message);
        }
    }
}

输出结果:

Enum.TryParse方法获取的枚举值:Green
Enum.Parse方法获取的枚举值:Green

在示例中,我们定义了一个颜色枚举类型Color,然后通过字符串"Green"获取了对应的枚举值,并输出了结果。

以上就是在C#中从字符串中获取枚举值的两种方法。使用Enum.TryParse方法可以避免在转换失败时抛出异常,而使用Enum.Parse方法则更加简洁。根据实际情况选择合适的方法来获取枚举值即可。