13.枚举类型与位标记
枚举类型定义了一组符号名称和数值对。它属于值类型,但不能定义任何的方法、属性或事件。
//枚举类型实际就是一个定义了一组常数字段的结构而已。
struct Color : System.Enum{
public const Color Red = (Color) 0;
public const Color Blue = (Color) 1;
}
GetUnderlyingType(Type enumType)方法返回枚举类型实例的基础类型。C#默认为int
System.Enum.ToString方法将器数值映射为四种字符串表达形式
枚举类型表示单个数值,而位标记表示一组标记。
14.数组
数组是分配在托管堆上的引用类型,并且应用程序中的数组变量包含的是一个指向数组的引用,而非数组本身。
C#支持交错数组
Point[][] myPolygons = new Point[2][];
myPolygons[0] = new Point[10];
myPolygons[1] = new Point[30];
对于引用类型的数组,且维数相同,CLR允许它们进行类型转换。
CLR不允许将元素为值类型的数组转型为任何其他类型,但可以使用Array.Copy,创建一个新数组来达到期望的效果。
Int32 [] music=new Int32[4];
Object[] mymusic = (Object[]) music; //error
Object[] mymusic=new Object[music.length]
Array.Copy(music,mymusic,music.length); //Copy方法不仅能进行拷贝,而且还能在拷贝每一个元素时进行相应的类型转换
Array.Copy方法执行的是浅拷贝,若源数组中的元素是引用类型,要获得一个深拷贝,则每个元素的类型都要实现Icloneable接口?????。
我们可以通过调用Array的静态方法CreateInstance来动态地创建数组。
e.g 1
我们要实现下图所示:
//创建下限非0的数组Revenue
e.g 2
定义了一个方法Redim(),用来重新调整数组的长度