一个枚举,它表示一组有限的值,对可能的值进行约束。
1、定义一个枚举
//枚举
public enum Genders
{
Male = 1,
Female = 2
}
2、获取枚举的值
//获取枚举的值
Genders genders = Genders.Female;
int value = (int)genders; //2
string key = genders.ToString(); //Female
3、从一个字符串转换成枚举
//从一个字符串转换成枚举
Genders gender = (Genders)Enum.Parse(typeof(Genders), "Female");
Console.WriteLine(gender);
4、从一个枚举值转换成枚举
//从一个枚举值转换成枚举
Genders gender = (Genders)Enum.ToObject(typeof(Genders), 2);
Console.WriteLine(gender);
5、从一个字符串转换枚举值
//从一个字符串转换枚举值
int valus = (int)(Enum.Parse(typeof(Genders), "Female"));
Console.WriteLine(valus);
6、判断是否有效枚举值
//判断是否有效枚举值
bool b1 = System.Enum.IsDefined(typeof(Genders), 2); //True
bool b2 = System.Enum.IsDefined(typeof(Genders), "Female"); //True
bool b3 = System.Enum.IsDefined(typeof(Genders), 99); //False
bool b4 = System.Enum.IsDefined(typeof(Genders), "ABC"); //False
7、枚举的遍历
//枚举的遍历
public static Dictionary<string, int> GetGenders()
{
Dictionary<string, int> result = new Dictionary<string, int>();
string key = "";
int value = 0;
foreach (int gender in Enum.GetValues(typeof(Genders)))
{
key = Enum.GetName(typeof(Genders), gender);
value = gender;
result.Add(key, value);
}
return result;
}
8、枚举公共处理类
/// <summary>
/// 枚举公共处理类
/// </summary>
public class EnumHandler<T>
{
/// <summary>
/// 转换成枚举
/// </summary>
public T ToEnum(object value)
{
int i = 0;
if (int.TryParse(value.ToString(), out i))
{
return (T)Enum.ToObject(typeof(T), i);
}
else
{
return (T)Enum.Parse(typeof(T), value.ToString());
}
}
/// <summary>
/// 判断是否有效枚举值
/// </summary>
public bool IsEnumValue(Object value)
{
int i = 0;
if (int.TryParse(value.ToString(), out i))
{
return System.Enum.IsDefined(typeof(T), i);
}
else
{
return System.Enum.IsDefined(typeof(T), value);
}
}
/// <summary>
/// 枚举的遍历
/// </summary>
public Dictionary<string, int> ToDictionary()
{
Dictionary<string, int> result = new Dictionary<string, int>();
string key = "";
int value = 0;
foreach (int gender in Enum.GetValues(typeof(T)))
{
key = Enum.GetName(typeof(T), gender);
value = gender;
result.Add(key, value);
}
return result;
}
}
测试:
static void Main(string[] args)
{
object value = 2;
EnumHandler<Genders> enumHandler = new EnumHandler<Genders>();
if (enumHandler.IsEnumValue(value))
{
Genders gender = enumHandler.ToEnum(value);
Console.WriteLine(gender);
}
else
{
Console.WriteLine("无效的枚举值");
}
Console.ReadLine();
}