數(shù)組
數(shù)組在 C# 中比 C++ 中要高級(jí)很多星爪。數(shù)組分配于堆中,所以是引用類型的粉私。你不能訪問數(shù)組邊界外的元素顽腾。所以 C# 防止你引發(fā)那種 bug诺核。同時(shí)也提供了迭代數(shù)組元素的幫助函數(shù)抄肖。foreach 是這樣的迭代語句之一窖杀。C++ 和 C# 數(shù)組的語法差異在于:
- 方括號(hào)在類型后面而不是在變量名后面2. 創(chuàng)建元素使用 new 運(yùn)算符3. C# 支持一維漓摩、多維和交錯(cuò)數(shù)組(數(shù)組的數(shù)組)
例子:
int[] array = new int[10]; // int 型一維數(shù)組for (int i = 0; i < array.Length; i++)
array[i] = i;
int[,] array2 = new int[5,10]; // int 型二維數(shù)組array2[1,2] = 5;
int[,,] array3 = new int[5,10,5]; // int 型三維數(shù)組array3[0,2,4] = 9;
int[][] arrayOfarray = new int[2]; // int 型交錯(cuò)數(shù)組 - 數(shù)組的數(shù)組
arrayOfarray[0] = new int[4]; arrayOfarray[0] = new int[] {1,2,15};
索引器
索引器用于書寫一個(gè)可以通過使用 [] 像數(shù)組一樣直接訪問集合元素的方法入客。你所需要的只是指定待訪問實(shí)例或元素的索引管毙。索引器的語法和類屬性語法相同,除了接受作為元素索引的輸入?yún)?shù)外桌硫。
例子:
注意:CollectionBase 是用于建立集合的庫類夭咬。List 是 CollectionBase 中用于存放集合列表的受保護(hù)成員铆隘。
class Shapes: CollectionBase{
public void add(Shape shp) {
List.Add(shp); }
//indexer public Shape this[int index] {
get { return (Shape) List[index];
}set {
List[index] = value ; }
}}
裝箱/拆箱
裝箱的思想在 C# 中是創(chuàng)新的卓舵。正如前面提到的,所有的數(shù)據(jù)類型,無論是內(nèi)建的還是用戶定義的,都是從 System 命名空間的基類 object 繼承的膀钠。所以基礎(chǔ)的或是原始的類型打包為一個(gè)對象稱為裝箱(Boxing),相反的處理稱為拆箱(Unboxing)掏湾。
例子:
class Test{
static void Main() {
int myInt = 12;object obj = myInt ;intmyInt2=(int)obj; //拆箱
}}
// 裝箱
例程展示了裝箱和拆箱兩個(gè)過程。一個(gè) int 值可以被轉(zhuǎn)換為對象,并且能夠再次轉(zhuǎn)換回 int忘巧。當(dāng)某種值類型的變量需要被轉(zhuǎn)換為一個(gè)引用類型時(shí),便會(huì)產(chǎn)生一個(gè)對象箱保存該值恒界。拆箱則完全相反砚嘴。當(dāng)某個(gè)對象箱被轉(zhuǎn)換回其原值類型時(shí),該值從箱中拷貝至適當(dāng)?shù)拇鎯?chǔ)空間十酣。