![Visual C#(学习笔记)](https://wfqqreader-1252317822.image.myqcloud.com/cover/358/654358/b_654358.jpg)
2.5 复杂类型
2.5.1 枚举
枚举(enum)是一组已命名的数值常量,为一组在逻辑上密不可分的整数值提供便于记忆的符号。可以使用enum关键字来创建一种枚举类型,它的值被限制在一系列符号名称中。例如:声明一个名为WeekDays的枚举类型,它的值被限制于Monday,Tuesday,Wednesday,Thursday,Friday, Saturday和Sunday这7个符号名称。
enum WeekDays {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}
注意
符号名称必须放在花括号中,并以逗号分隔。
在一个枚举中,每个枚举元素都关联一个整数值。默认情况下,第一个枚举元素的值为0,后面每个枚举元素的值依次递增1。
在上述的枚举中,Monday为0,Tuesday为1,Wednesday为2,依此类推。
在枚举中,枚举元素可以重写默认值,如将Monday赋值为1,其后的元素将分别被赋值为2,3,……
![](https://epubservercos.yuewen.com/0A1A90/3590270004424001/epubprivate/OEBPS/Images/figure_0053_0001.jpg?sign=1739261029-39omuK0A0RD8GcZrH73JYpaZZQ5NaFkY-0-a5cedd2936149390cf8d0eed487696f9)
声明一个枚举类型以后,就可以像任何其他类型那样使用该枚举类型了。例如可以创建WeekDays类型的变量day:
WeekDays day;
注意
枚举类型的变量在某一时刻只能取枚举中的某一个元素的值。
每种枚举类型都有基础类型,该类型可以是除char以外的任何整型。枚举元素的默认基础类型为int,基础类型指定为每个枚举元素分配的存储大小。但是,从enum类型到整型的转换需要用显式类型转换来完成。例如:下面的语句通过使用强制转换从enum转换为int,将枚举元素Sunday赋给int类型的变量d。
int d = (int) day.Sunday;
示例:声明一个枚举类型WeekDays,其中一个枚举元素被显式转换为整数并赋给整型变量后从控制台输出。
![](https://epubservercos.yuewen.com/0A1A90/3590270004424001/epubprivate/OEBPS/Images/figure_0053_0002.jpg?sign=1739261029-pOct1pm9MyaIWJejIS61DqHBPsYfsWuf-0-86fa65687375bf6ee8de1be4b5ee6a2c)
示例:使用基类选项来声明元素类型是long的枚举类型。注意,即使枚举的基础类型是long,枚举元素仍然必须使用强制转换显式转换为long类型。
![](https://epubservercos.yuewen.com/0A1A90/3590270004424001/epubprivate/OEBPS/Images/figure_0054_0001.jpg?sign=1739261029-bJNIm4FtnUlB37SfUo6tPNStlIftkbOm-0-1115d38bb58b017db0b9ff2333e2696b)
2.5.2 数组
数组是一种数据结构,它包含若干相同类型的值,这些值存储在相邻的内存单元中。
1. 数组声明
数组是使用类型声明的,C#语言中,数组的声明如下:
![](https://epubservercos.yuewen.com/0A1A90/3590270004424001/epubprivate/OEBPS/Images/figure_0054_0002.jpg?sign=1739261029-LUCsd2qo94Aty9ptFmma62HlxUGJZVqh-0-22ba73d4235a0b6c211630f150c1b6e9)
例如声明一个含有5个元素的整型数组array1:
int[5] array1;
在C#中声明数组时,不一定要指定数组大小,数组中元素的个数可以稍后在程序中指定。
例如:
![](https://epubservercos.yuewen.com/0A1A90/3590270004424001/epubprivate/OEBPS/Images/figure_0054_0003.jpg?sign=1739261029-vC9Bvt2FOpYfPPKffCgheSazUnMa56Ya-0-b704e22a2856fdceabf197370b42f57b)
注意
除基本数据类型外,数组中的元素还可以是struct,enum和类类型
示例:创建一个由Time结构组成的数组timeArr。
Time[] timeArr;
除一维数组外,还可以声明多维数组。例如以下代码声明了一个两行三列的二维数组array3:
![](https://epubservercos.yuewen.com/0A1A90/3590270004424001/epubprivate/OEBPS/Images/figure_0055_0001.jpg?sign=1739261029-9GGNn0PU0KigYNqyIiUjbOG9fE8gjb5A-0-2085b44e8e010b162a04231142aa638b)
2. 初始化数组元素
声明一个数组时,数值中的所有元素被初始化为一个默认值,也可以将数组中的元素初始化为希望的值。例如:以下的代码初始化一个包含6个元素的整型数组array4。
int[] array4 = new int[6]{1,2,3,4,5,6};
注意
花括号中的值的数量必须与所声明数组的大小一致。
在数组元素初始化时,可以省略new表达式和数组的大小。例如:以下代码使用简化的方法初始化数组array4。
int[] array4 = {1,2,3,4,5,6};
3. 访问数组元素
为了访问数组中的元素,需要提供一个索引来指明所要访问的具体元素。
注意
数组的索引是从0开始的,数组中第一个元素的索引是0,而不是1。
例如:以下的代码获取数组array4中第二个元素,并将其赋值给整型变量x。
![](https://epubservercos.yuewen.com/0A1A90/3590270004424001/epubprivate/OEBPS/Images/figure_0055_0002.jpg?sign=1739261029-hywrcJS2YFKSKaKWRhQ5BGcfl4iq1t1j-0-29c2b18b5428694500849dabadb6f744)