C#和.NET Framework还允许用户根据这些简单的类型定义复合类型。

来源:百度文库 编辑:神马文学网 时间:2024/04/29 13:03:20
C#.NET Framework还允许用户根据这些简单的类型定义复合类型。  n         值类型

        可以定义两种类型:结构(struct)和枚举(enum)

ü         结构

        C#中,结构是一种特殊的类,它是值类型,而不是引用类型。因为结构是在堆栈上(结构的实例占用了堆栈的空间),所以创建和复制它的效率比类略高。但是结构他不支持继承。

        堆栈分配的类型比堆式(堆积)分配的类型的好处?

1.         堆栈或值类型的空间分配比堆式(堆积)分配类型更快。

2.         在堆栈中的值用完后,会立即自动解除分配。

3.         很容易把一个值类型变量的值复制到另一个值类型的变量中,方法是使用等号。

 

ü         枚举

枚举是用户自定义的整数类型。在声明时,要指定该枚举可以包含的一组可接受的实例值。不仅如此,还可以给值指定易于记忆的名称。如果在代码的某个地方,要试图把一个不在可接受组值范围内的值赋予枚举的一个实例,编译器就会报告一个错误,且枚举不支持继承。

使用枚举比使用无格式的整数的好处?

1.         枚举可以使代码易于维护,有助于确保给变量指定合法的期望值。

2.         枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。

3.         枚举使代码更易于键入。

枚举的语法:

enum:integer_type

{

   nameN=valueN

}

访问枚举元素的方式和访问静态字段的方式相似,枚举的名称、一个句点和字段名称。也可以声明个枚举类型的变量,在条件语句不能使用枚举元素直接和一个基本数据类型比较。若要比较需先将类型强制转换。

Enum类的方法:

System.Enum类为操作枚举提供了许多静态便利的方法,可以用这些方法访问枚举元素的名称或值,确定枚举中是否存在一个值,格式化枚举值,或者把值转换为枚举类型。System.Enum类还重写了ToString()方法,它返回枚举实例的一个字行串表示。

Public static string GetName(Type enumType,object value)

Public static string[]GetNames(Type enumType)

Public static Type GetUnderlyingType(Type enumType)

Public static Array GetValues(Type enumType)

Public Static bool IsDefined(Type enumType,object value)

System.Enum类中定义的一些方法

 

   n         引用类型

 

C#支持的用户自定义复合类型的引用类型包括:

ü         类

    类在C#.NET Framework中是基本的用户定义类型。几乎所用的C#可执行文件都至少有一个类(理论上可以使用结构来代替),其中包含Main方法(程序的入口)。类是一种复合的数据类型,包括数据成员(字段,常量和事件)和函数(主要是方法和属性,但也包含运算符等)。换言之,类封装了数据以及访问和操作这些数据的功能。

ü         接口

         接口用于为实现它们的类定义功能。它们包含属性、方法、事件和索引符等,但接口不能被实例化,也没有定义这些函数的执行方法。例如,如果接口包含一个方法,它将定义方法的返回类型和参数,但不包含执行该方法的任何代码。执行这个接口的任何类都需要提供该方法的执行方式。

ü         委托

        委托是指引用方法的类型,委托允许确定运行时要调用哪些方法。

ü         数组

        数组是包含相同数据类型无素的一种数据结构。数组的无素通过一个整型的下标值访问。在C#中,第一个元素的下标是0

1、  创建一维数组的语法:

type[]arrayName=new type[length];    OR 

type[]arrayName;

arrayName=new type[length];

2、  创建多维组的语法:

type[,]arrayName=new type[numRows,numCols];  OR

type[,,]arrayName=new type[dim1,dim2,dim3];

3、  要创建一个行数固定,列数可变的二维锯齿形数组(正交数组或jagged数组)即是每一行有不同的列。

Type[][]arrayName=new type[numRows][];//如:

int[][]a = new int[3][];

a[0]=new int[4];

a[1]=new int[2];

a[2]=new int[1];

说个数组说明,整数型数组a共有三行(a[0],a[1],a[2])但是各列却不同,a[0]这一行有4(a[0]= new int[4])

访问数组元素的方法应声明时的格式而定,如:

value=arrayName[];

value=arrayName[row,column];

vale=arrayName[row][column];

4、  数组的属性和方法

C#中,Array类是所有数组的基类(父类),因此所有数组都可以使用在System.Array类中定义的属性和方法。例如:

Rank属性返回数组的维数;

Length属性返回数组元素的总数;

Reverse()方法反转数组元素的顺序;

Sort()方法按字母顺序或其它算法排列元素;

Clear()方法把值类型的数组的一个或多个元素设为0,把引用类型的元素设为空。(可查看系统类的介绍)