13.枚举类型与位标记

枚举类型定义了一组符号名称和数值对。它属于值类型,但不能定义任何的方法、属性或事件。

//枚举类型实际就是一个定义了一组常数字段的结构而已。

struct Color : System.Enum{

     public const Color Red = (Color) 0;

     public const Color Blue = (Color) 1;

}

GetUnderlyingTypeType 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(),用来重新调整数组的长度

posted on 2009-03-11 23:16  Pavel Yu  阅读(455)  评论(0编辑  收藏  举报