枚举(enumeration),就是一组字面(单词),每个字面对应一个字面值。
枚举有什么用处
例如,需要把一年四季在程序中表示出来,可能会用0,1,2,3,分别表示一年四季中的春、夏、秋、冬。这样不能直观的表示出是哪个季节,另外这样的代码不能成为健壮的代码。假设,我们在程序中定义了一个int类型的变量seaSon,用它来存入季节。此时,可以把超出定义四季范围内的int类型数字赋值给seaSon.
枚举类型,就可以解决这些问题。
怎么定义枚举
默认情况下,枚举中的字面值为int类型,我们可以改为其他整数类型。例如:short,byte,sbyte,ushort,int,uint,long,ulong.
怎样使用枚举类型
适用于枚举的运算符
因为枚举中的字面值只能为整数类型,所以适用于整数类型的运算符都适用于枚举类型。(bitwise、shift除外)。
什么是结构
跟类很相似,有自己的字段,方法,构造方法。
结构有什么用处
当一个类中存放的数据非常少,此时创建这个类所消耗的内存资源与它所存的数据不成比例。此时,我们可以考虑用结构来代替类。因为结构是值类型,存放在栈上,就减少了内存的开销。
怎样定义结构
结构与类的区别
结构与类的区别有以下两种:
1.不能自己定义默认的构造方法.(没有参数的构造方法)。以下代码,如果是类,不会报错。
因为,编译器在编译时,如果发现类中没有构造方法,就会自动生成一个。如果类中有构造方法,就不会自动生成。编译器不关结构中有没有构造方法,都会自动生成构造方法。与类中的默认构造方法一样,结构中的构造方法,会把结构中的字段根据所对应的类型初始化为null,0,false.可以通过非默认构造函数改变字段值。初始化结构中的字段,必须全部初始化。
2.在类中,我们可以定义字段时初始化,但是在结构中不可以。
理解结构初始化
我们创建了一个结构类型的对象now。new这个关键字调用了Time结构的默认构造函数,把它的字段初始化为0. 因为结构是值类型,我们也可以这样:Time now;但是此时,访问now中的任意成员,都会报错。因为没有初始化now中的字段,它们都是uninitialized状态。