C#枚举

it2025-09-22  7

下面的实例演示了枚举变量的用法

using System; namespace EnumApplication { class EnumProgram { enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat }; static void Main(string[] args) { int WeekdayStart = (int)Days.Mon; int WeekdayEnd = (int)Days.Fri; Console.WriteLine("Monday: {0}", WeekdayStart); Console.WriteLine("Friday: {0}", WeekdayEnd); Console.ReadKey(); } } }

当上面的代码被编译和执行时,它会产生下列结果:

Monday: 1 Friday: 5

简单枚举

enum Num { n1,n2,n3 } enum Sex:byte { male,female } string s1 = Enum.GetName(typeof(Num), 1); //枚举成员名 string[] s2 = Enum.GetNames(typeof(Num)); Console.WriteLine(s1); foreach (var item in s2) { Console.WriteLine(item); } Type t = Enum.GetUnderlyingType(typeof(Num)); //Int32枚举类型 Console.WriteLine(t);

标志枚举 这种位运算是非常有用的,在sql语句里也支持位运算。也就是说,把一个枚举运算后的结果存入数据库之后,还能够按照你的要求读取出来。比如:将一个"白美"存如数据库的值存入数据库,那么存入去的就是整型5。

那么我想读出所有的"白"数据列表怎么读呢?白,可以是纯白"1",也是是白富3,可以是白美5,也可以是白富美7,你可以用in来读,但是更好的方法是在sql语句中同样使用位运算。

class Program { static void Main(string[] args) { var man = Week.白 | Week.美; //赋值为101 计算方法001或上100,结果是101 Console.WriteLine((int)man); if ((man & Week.白) == Week.白) //101 man { //001 白 逐位相与, Console.WriteLine("此人白"); //001 如果结果是白,就可以反推出man包含 白 } else { Console.WriteLine("此人黑"); } Console.ReadKey(); } } [System.Flags] public enum Week { 白 = 1, //001 富 = 2, //010 美 = 4, //100 }
最新回复(0)