在C#当字符串和枚举类型的转换是很常见的功能。特此记录一下:

using System;
public enum Flowers
{
    None,
    Daisy= 1,
    Lili = 2,
    Rose = 3
}


class Conversion{
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");
    }
 }
}

 

几种常用方式

  • Enum.Parse(typeof(T), "Rose"):返回 object,需强制转换。
  • Enum.TryParse("Rose", out T v):推荐,解析失败返回 false 而不抛异常。
  • Enum.Parse<T>("Rose"):泛型重载,写法更简洁。
  • 忽略大小写:Enum.TryParse("rose", true, out v)。