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
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…