可以定義兩種類型:結(jié)構(gòu)(struct)和枚舉(enum)
ü 結(jié)構(gòu)
在C#中,結(jié)構(gòu)是一種特殊的類,它是值類型,而不是引用類型。因?yàn)榻Y(jié)構(gòu)是在堆棧上(結(jié)構(gòu)的實(shí)例占用了堆棧的空間),所以創(chuàng)建和復(fù)制它的效率比類略高。但是結(jié)構(gòu)他不支持繼承。
堆棧分配的類型比堆式(堆積)分配的類型的好處?
1. 堆?;蛑殿愋偷目臻g分配比堆式(堆積)分配類型更快。
2. 在堆棧中的值用完后,會(huì)立即自動(dòng)解除分配。
3. 很容易把一個(gè)值類型變量的值復(fù)制到另一個(gè)值類型的變量中,方法是使用等號(hào)。
ü 枚舉
枚舉是用戶自定義的整數(shù)類型。在聲明時(shí),要指定該枚舉可以包含的一組可接受的實(shí)例值。不僅如此,還可以給值指定易于記憶的名稱。如果在代碼的某個(gè)地方,要試圖把一個(gè)不在可接受組值范圍內(nèi)的值賦予枚舉的一個(gè)實(shí)例,編譯器就會(huì)報(bào)告一個(gè)錯(cuò)誤,且枚舉不支持繼承。
使用枚舉比使用無(wú)格式的整數(shù)的好處?
1. 枚舉可以使代碼易于維護(hù),有助于確保給變量指定合法的期望值。
2. 枚舉使代碼更清晰,允許用描述性的名稱表示整數(shù)值,而不是用含義模糊的數(shù)來(lái)表示。
3. 枚舉使代碼更易于鍵入。
枚舉的語(yǔ)法:
<modifiers>enum<enum_name>:integer_type
{
nameN=valueN
}
訪問枚舉元素的方式和訪問靜態(tài)字段的方式相似,枚舉的名稱、一個(gè)句點(diǎn)和字段名稱。也可以聲明個(gè)枚舉類型的變量,在條件語(yǔ)句不能使用枚舉元素直接和一個(gè)基本數(shù)據(jù)類型比較。若要比較需先將類型強(qiáng)制轉(zhuǎn)換。
Enum類的方法:
System.Enum類為操作枚舉提供了許多靜態(tài)便利的方法,可以用這些方法訪問枚舉元素的名稱或值,確定枚舉中是否存在一個(gè)值,格式化枚舉值,或者把值轉(zhuǎn)換為枚舉類型。System.Enum類還重寫了ToString()方法,它返回枚舉實(shí)例的一個(gè)字行串表示。
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#支持的用戶自定義復(fù)合類型的引用類型包括:
ü 類
類在C#和.NET Framework中是基本的用戶定義類型。幾乎所用的C#可執(zhí)行文件都至少有一個(gè)類(理論上可以使用結(jié)構(gòu)來(lái)代替),其中包含Main方法(程序的入口)。類是一種復(fù)合的數(shù)據(jù)類型,包括數(shù)據(jù)成員(字段,常量和事件)和函數(shù)(主要是方法和屬性,但也包含運(yùn)算符等)。換言之,類封裝了數(shù)據(jù)以及訪問和操作這些數(shù)據(jù)的功能。
ü 接口
接口用于為實(shí)現(xiàn)它們的類定義功能。它們包含屬性、方法、事件和索引符等,但接口不能被實(shí)例化,也沒有定義這些函數(shù)的執(zhí)行方法。例如,如果接口包含一個(gè)方法,它將定義方法的返回類型和參數(shù),但不包含執(zhí)行該方法的任何代碼。執(zhí)行這個(gè)接口的任何類都需要提供該方法的執(zhí)行方式。
ü 委托
委托是指引用方法的類型,委托允許確定運(yùn)行時(shí)要調(diào)用哪些方法。
ü 數(shù)組
數(shù)組是包含相同數(shù)據(jù)類型無(wú)素的一種數(shù)據(jù)結(jié)構(gòu)。數(shù)組的無(wú)素通過一個(gè)整型的下標(biāo)值訪問。在C#中,第一個(gè)元素的下標(biāo)是0。
1、 創(chuàng)建一維數(shù)組的語(yǔ)法:
type[]arrayName=new type[length]; OR
type[]arrayName;
arrayName=new type[length];
2、 創(chuàng)建多維組的語(yǔ)法:
type[,]arrayName=new type[numRows,numCols]; OR
type[,,]arrayName=new type[dim1,dim2,dim3];
3、 要?jiǎng)?chuàng)建一個(gè)行數(shù)固定,列數(shù)可變的二維鋸齒形數(shù)組(正交數(shù)組或jagged數(shù)組)即是每一行有不同的列。
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];
說個(gè)數(shù)組說明,整數(shù)型數(shù)組a共有三行(a[0],a[1],a[2])但是各列卻不同,a[0]這一行有4列(a[0]= new int[4])。
訪問數(shù)組元素的方法應(yīng)聲明時(shí)的格式而定,如:
value=arrayName[];
value=arrayName[row,column];
vale=arrayName[row][column];
4、 數(shù)組的屬性和方法
C#中,Array類是所有數(shù)組的基類(父類),因此所有數(shù)組都可以使用在System.Array類中定義的屬性和方法。例如:
Rank屬性返回?cái)?shù)組的維數(shù);
Length屬性返回?cái)?shù)組元素的總數(shù);
Reverse()方法反轉(zhuǎn)數(shù)組元素的順序;
Sort()方法按字母順序或其它算法排列元素;
Clear()方法把值類型的數(shù)組的一個(gè)或多個(gè)元素設(shè)為0,把引用類型的元素設(shè)為空。(可查看系統(tǒng)類的介紹)
聯(lián)系客服