Dot-Net

獲取枚舉值的名稱

  • April 16, 2013

我正在嘗試創建一個函式,我們可以在其中獲取 EnumValue 的 Namevalue

例如:

Get_Enum_ValueName(DayOfWeek, 0)

…這將返回“星期日”。

但是我的程式碼不起作用,它說沒有定義類型:

Private Function Get_Enum_ValueName(Of T)(ByVal EnumName As T, ByVal EnumValue As Integer) As String
   Return DirectCast([Enum].Parse(GetType(EnumName), EnumValue ), EnumName).ToString
End Function

給定一個enum

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

以下是您可以做的事情:

static void Main(string[] args)
{

   // enum to int
   int i=(int)Week.Thursday;

   // int to enum;
   Week day=(Week)3;

   // enum to string
   string name=Week.Thursday.ToString();
   string fun=Enum.GetName(typeof(Week), 6);
   string agh=Enum.GetName(typeof(Week), Week.Monday);
   string wed=EnumName(Week.Wednesday);

   // string to enum
   Week apt=(Week)Enum.Parse(typeof(Week), "Thursday");

   // all values of an enum type
   Week[] days=(Week[])Enum.GetValues(typeof(Week));

   // all names of an enum type
   string[] names=Enum.GetNames(typeof(Week));

}

static string EnumName<T>(T value)
{
   return Enum.GetName(typeof(T), value);
}

編輯 1

如果要根據基礎數值從一種轉換enum為另一種不同類型(轉換為整數和從整數),請使用以下命令:enum

/// <summary>
/// Casts one enum type to another based on the underlying value
/// </summary>
/// <typeparam name="TEnum">The type of the enum.</typeparam>
/// <param name="otherEnum">The other enum.</param>
public static TEnum CastTo<TEnum>(this Enum otherEnum)
{
   return (TEnum)Enum.ToObject(typeof(TEnum), Convert.ToInt32(otherEnum));
}

用作

public enum WeekEnd
{
   Saturday = Week.Saturday,
   Sunday = Week.Sunday
}

static void Main(string[] args)
{
   var day = WeekEnd.Saturday.CastTo<Week>();
   // Week.Sunday
}

引用自:https://stackoverflow.com/questions/16039037