深入解析C 中的交錯陣列與隱式型別的陣列

2022-09-26 06:51:12 字數 2808 閱讀 4824

交錯陣列

交錯陣列是元素為陣列的陣列。交錯陣列元素的維度和大小可以不同。交錯陣列有時稱為「陣列的陣列」。以下示例說明如何宣告、初始化和訪問交錯陣列。

下面宣告乙個由三個元素組成的一維陣列,其中每個元素都是乙個一維整數陣列:

int jaggedarray = new int[3];

必須初始化 jaggedarray 的元素後才可以使用它。可以如下例所示初始化該元素:

jaggedarray[0] = new int[5];

jaggedarray[1] = new int[4];

jaggedarray[2] = new int[2];

每個元素都是乙個一維整數陣列。第程式設計客棧乙個元素是由 5 個整數組成的陣列,第二個是由 4 個整數組成的陣列,而第三個是由 2 個整數組成的陣列。

也可以使用初始值設定項用值填充陣列元素,在這種情況下不需要陣列大小。例如:

jaggedarray[0] = new int ;

jaggedarray[1] = new int ;

jaggedarray[2] = new int ;

還可以在宣告陣列時將其初始化,如:

int jaggedarray2 = new int

, new int ,

new int

};可以使用下面的速記格式。請注意:不能從元素初始化中省略 new 運算子,因為不存在元素的預設初始化:

int jaggedarray3 =

, new int ,

new int

};交錯陣列是陣列的陣列,因此其元素是引用型別並初始化為 null。

可以如下例所示訪問個別陣列元素:

// assign 77 to the second element ([1]) of the first array ([0]):

jaggedarray3[0][1] = 77;

// assign 88 to the second element ([1]) of the third array ([2]):

jaggedarray3[2][1] = 88;

可以混合使用交錯陣列和多維陣列。下面宣告和初始化乙個一維交錯陣列,該陣列包含大小不同的三個二維陣列元素。有關二維陣列的詳細資訊,請參閱多維陣列(c# 程式設計指南)。

int[,] jaggedarray4程式設計客棧 = new int[3][,]

, },

new int[,] , , },

new int[,] , , }

};可以如本例所示訪問個別元素,該示例顯示第乙個陣列的元素 [1,0] 的值(值為 5):

system.console.write("", jaggedarray4[0][1, 0]);

方法 length 返回包含在交錯陣列中的陣列的數目。例如,假定您已宣告了前乙個陣列,則此行:

system.console.writeline(jaggedarray4.length);

返回值 3。

本例生成乙個陣列,該陣列的元素為陣列自身。每乙個陣列元素都有不同的大小。

class arraytest

; arr[1] = new int[4] ;

// display the array elements:

for (int i = 0; i < arr.length; i++)

): ", i);

for (int j = 0; j < arr[i].length; j++)

", arr[i][j], j == (arr[i].length - 1) ? "" : " ");

}system.console.writeline();

}// keep the console window open in debug mode.

system.console.writeline("press any key to exit.");

system.console.readkey();

}}輸出:element(0): 1 3 5 7 9

element(1): 2 4 6 8

隱式型別的陣列

可以建立隱式型別的陣列,在這樣的陣列中,陣列例項的型別是從陣列初始值設定項中指定的元素推斷而來的。有關任何隱式型別變數的規則也適用於隱式型別的陣列。

在查詢表示式中,隱式型別的陣列通常與匿名型別以及物件初始值設定項和集合初始值設定項一起使用。

下面的示例演示如何建立隱式型別的陣列:

class implicitlytypedarraysample

; // int

var b = new ; // string

// single-dimension jagged array

var c = new

, new

}; // jagged array of strings

var d = n程式設計客棧ew

, new

}; }

}請注意,在上乙個示例中,沒有在初始化語句的左側對隱式型別的陣列使用方括號。另請注意,交錯陣列就像一維陣列那樣使用 new 進行初始化。

物件初始值設定項中的隱式型別的陣列

建立包含陣列的匿名型別時,必須在該型別的物件初始值設定項中對陣列進行隱式型別化。在下面的示例中,contacts 是乙個隱式型別的匿名型別陣列,其中每個匿名型別都包含乙個名為 phonenumbers 的陣列。請注意,物件初始值設定項內部未使用 var 關鍵字。

var contacts = new

},new }};

本文標題: 深入解析c#中的交錯陣列與隱式型別的陣列

本文位址:

深入解析C 中的string類

一,c語言的字串 在c語言裡,對字串的處理一項都是一件比較痛苦的事情,因為通常在實現字串的操作的時候都會用到最不容易駕馭的型別 指標。比如下面這個例子 example 1 char str 12 hello char p str p h 改變第乙個字母 example 2 char ptr hell...

隱式轉換中隱式引數與隱式函式的使用

隱式引數的使用 要定義多個隱式引數時,需要使用柯里化函式。隱式轉換作用就是 當呼叫方法時,不必手動傳入方法中的隱式引數,scala會自動在作用域範圍內尋找隱式值自動傳入。1 同型別的引數的隱式值只能在作用域內出現一次,同乙個作用域內不能定義多個型別一樣的隱式值。2 implicit 關鍵字必須放在隱...

C 中的陣列,多維陣列和交錯陣列

想研究一些物件導向的東西,也許是 寫得還不夠多。感覺還不好,看那些教程,不是嫌太水就是太難看不懂。心情很是落寞 不過再怎樣也要堅持每天發一篇部落格。這篇來說一下c 中的陣列,多維陣列,交錯陣列的一些東西。有那麼一點點研究茴香豆的茴有四種寫法的感覺。先講三點顯而易見卻又值得一提的東西 第一點陣列是一種...