C#学习笔记—枚举、结构
1、默认情况下,枚举的第一个元素被设置为值0,其余的按照n+1递推;枚举不一定是连续的,也不需要有唯一值。
2、默认情况下,用来保存枚举值的存储类型是System.Int32,当然也可以改成我们喜欢的类型。
View Code
1 enum EmpType : byte
2 {
3 Manager = 10,
4 Grunt = 1,
5 Contractor= 100,
6 VicePresident = 9
7 }
3、为枚举变量赋值时,必须以枚举名(EmpType)来设置值(Grunt)。因为枚举是固定的一组名称/值对,将枚举变量设置为枚举类型没有定义的值是不合法的。
View Code
1 static void Main(string[] args)
2 {
3 //创建职员类型
4 EmpType emp = EmpType.Contractor;
5 AskForBonus(emp);
6 Console.ReadLine();
7 }
8
9 //用枚举作为参数
10 static void AskForBonus(EmpType e)
11 {
12 switch (e)
13 {
14 case EmpType.Manager:
15 Console.WriteLine("How about stock options instead?");
16 break;
17 case EmpType.Grunt:
18 Console.WriteLine("You have got to be kidding...");
19 break;
20 case EmpType.Contractor:
21 Console.WriteLine("You already get enough cash...");
22 break;
23 case EmpType.VicePresident:
24 Console.WriteLine("Very Good, Sir!");
25 break;
26 }
27 }
4、System.Enum类型
Enum.GetUnderlyingType()方法,返回用于保存枚举类型值的数据类型;
ToString()方法,返回当前枚举值的字符串名;
获取某个枚举变量值,只需要根据底层存储类型对枚举变量进行强制类型转换即可;
View Code
1 //输出枚举的存储
2 Console.WriteLine(Enum.GetUnderlyingType(emp.GetType()));
3 //获取枚举的名称
4 Console.WriteLine(emp.ToString());
5 //获取枚举变量的值
6 Console.WriteLine((byte)emp);
Enum.GetValues()静态方法,返回System.Array的一个实例
View Code
1 //这个方法会输出任何枚举的细节
2 static void EvaluateEnum(System.Enum e)
3 {
4 Console.WriteLine("Information about {0}",e.GetType().Name);
5 Console.WriteLine("Underlying storage type:{0}", Enum.GetUnderlyingType(e.GetType()));
6
7 //获取传入参数的名称/值对
8 Array enumData = Enum.GetValues(e.GetType());
9 Console.WriteLine("This enum has {0} members.", enumData.Length);
10 for (int i = 0; i < enumData.Length; i++)
11 {
12 Console.WriteLine("Name: {0},Value: {0:D}", enumData.GetValue(i));
13 }
14 Console.WriteLine();
15 }
5、结构是可以包含许多数据字段和操作这些字段的成员的类型,使用Struct关键字来创建结构;
6、通常在类或结构中定义公共数据是一个不好的方式,我们最好使用私有数据,它可以使用公共属性来访问和改变。
7、如果我们在使用结构之前不为每一个公共字段数据赋值,就会受到编译错误;可以使用new关键字来创建结构变量,它会调用默认构造函数,一个好处是每一个字段数据都会被自动设置为默认值。还可以使用自定义构造函数来设计结构,它允许我们在创建变量时指定字段数据的值。