Get the name of Enum value
.net, enums, vb.net, visual-studio
Solution
Given an `enum`
public enum Week
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
here are the things you can do:
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);
}
Edit 1
If you want to convert from one `enum` to another `enum` of different type based on the underlying numeric value (convert to integer and from integer), then use the following:
/// <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));
}
to be used as
public enum WeekEnd
{
Saturday = Week.Saturday,
Sunday = Week.Sunday
}
static void Main(string[] args)
{
var day = WeekEnd.Saturday.CastTo<Week>();
// Week.Sunday
}
Problem
I'm trying to make a function where we can get the Namevalue of a EnumValue For example: ``` Get_Enum_ValueName(DayOfWeek, 0) ``` ...This will return "Sunday". But my code don't works, it says the type is not defined: ``` 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 ```