[Flags]
enum Color
{
Red = 1,
White = 2,
Blue = 4,
Black = 8,
Green = 16,
Yellow = 32,
Pink = 64,
}
public static string? GetName (Type enumType, object value);
示例:
string str = Enum.GetName(typeof(Color), 1); // Red
public static string[] GetNames (Type enumType);
示例:
foreach (var item in Enum.GetNames(typeof(Color)))
{
Console.WriteLine(item);
}
/*
Red
White
Blue
Black
Green
Yellow
Pink
*/
// ignoreCase 是否区分大小写,默认true
public static object Parse (Type enumType, string value, bool ignoreCase);
示例:
Color color = (Color)Enum.Parse(typeof(Color), "Red");
Console.WriteLine(color); // Red
除了使用示例枚举方式声明枚举也可以使用以下方式:
enum Color
{
Red = 1, //0x1
White = 1 << 1, //0x2
Blue = 1 << 2, //0x4
Black = 1 << 3, //0x8
Green = 1 << 4, //0x10
Yellow = 1 << 5, //0x20
Pink = 1 << 6 //0x40
}
具有Flags特性的枚举组合在调用实例方法ToString()时,会得到对应的枚举值组合,而非对应的枚举数:
//对于以上枚举,如果不带Flags特性
Console.WriteLine(Color.Red | Color.White); // 3
//对于以上枚举,如果带上Flags特性
Console.WriteLine(Color.Red | Color.White); // Red , White
Color myColor = Color.Red | Color.White | Color.Blue;//”|”表示相并
去除 Color.Red 和 Color.White
myColor ^= (Color.Red | Color.White ) // "^" 表示异或,不同为真,相同为假。
或
myColor &= ~(Color.Red | Color.White ) // "~" 表示取反
// 是否包含Color.Red
(myColor & Color.Red) != 0 // "&" 一假即假
bool flag = (myColor & Color.Red) == Color.Red;
(myColor | Color.Write) != 0 / /判断是否只有白色。
bool flag = myColor == Color.Write;