深入解析C#中的交錯(cuò)數(shù)組與隱式類(lèi)型的數(shù)組
交錯(cuò)數(shù)組
交錯(cuò)數(shù)組是元素為數(shù)組的數(shù)組。交錯(cuò)數(shù)組元素的維度和大小可以不同。交錯(cuò)數(shù)組有時(shí)稱(chēng)為“數(shù)組的數(shù)組”。以下示例說(shuō)明如何聲明、初始化和訪(fǎng)問(wèn)交錯(cuò)數(shù)組。
下面聲明一個(gè)由三個(gè)元素組成的一維數(shù)組,其中每個(gè)元素都是一個(gè)一維整數(shù)數(shù)組:
int[][] jaggedArray = new int[3][];
必須初始化 jaggedArray 的元素后才可以使用它。可以如下例所示初始化該元素:
jaggedArray[0] = new int[5]; jaggedArray[1] = new int[4]; jaggedArray[2] = new int[2];
每個(gè)元素都是一個(gè)一維整數(shù)數(shù)組。第一個(gè)元素是由 5 個(gè)整數(shù)組成的數(shù)組,第二個(gè)是由 4 個(gè)整數(shù)組成的數(shù)組,而第三個(gè)是由 2 個(gè)整數(shù)組成的數(shù)組。
也可以使用初始值設(shè)定項(xiàng)用值填充數(shù)組元素,在這種情況下不需要數(shù)組大小。例如:
jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };
還可以在聲明數(shù)組時(shí)將其初始化,如:
int[][] jaggedArray2 = new int[][]
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
可以使用下面的速記格式。請(qǐng)注意:不能從元素初始化中省略 new 運(yùn)算符,因?yàn)椴淮嬖谠氐哪J(rèn)初始化:
int[][] jaggedArray3 =
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
交錯(cuò)數(shù)組是數(shù)組的數(shù)組,因此其元素是引用類(lèi)型并初始化為 null。
可以如下例所示訪(fǎng)問(wèn)個(gè)別數(shù)組元素:
// 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;
可以混合使用交錯(cuò)數(shù)組和多維數(shù)組。下面聲明和初始化一個(gè)一維交錯(cuò)數(shù)組,該數(shù)組包含大小不同的三個(gè)二維數(shù)組元素。有關(guān)二維數(shù)組的詳細(xì)信息,請(qǐng)參閱多維數(shù)組(C# 編程指南)。
int[][,] jaggedArray4 = new int[3][,]
{
new int[,] { {1,3}, {5,7} },
new int[,] { {0,2}, {4,6}, {8,10} },
new int[,] { {11,22}, {99,88}, {0,9} }
};
可以如本例所示訪(fǎng)問(wèn)個(gè)別元素,該示例顯示第一個(gè)數(shù)組的元素 [1,0] 的值(值為 5):
System.Console.Write("{0}", jaggedArray4[0][1, 0]);
方法 Length 返回包含在交錯(cuò)數(shù)組中的數(shù)組的數(shù)目。例如,假定您已聲明了前一個(gè)數(shù)組,則此行:
System.Console.WriteLine(jaggedArray4.Length);
返回值 3。
本例生成一個(gè)數(shù)組,該數(shù)組的元素為數(shù)組自身。每一個(gè)數(shù)組元素都有不同的大小。
class ArrayTest
{
static void Main()
{
// Declare the array of two elements:
int[][] arr = new int[2][];
// Initialize the elements:
arr[0] = new int[5] { 1, 3, 5, 7, 9 };
arr[1] = new int[4] { 2, 4, 6, 8 };
// Display the array elements:
for (int i = 0; i < arr.Length; i++)
{
System.Console.Write("Element({0}): ", i);
for (int j = 0; j < arr[i].Length; j++)
{
System.Console.Write("{0}{1}", 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
隱式類(lèi)型的數(shù)組
可以創(chuàng)建隱式類(lèi)型的數(shù)組,在這樣的數(shù)組中,數(shù)組實(shí)例的類(lèi)型是從數(shù)組初始值設(shè)定項(xiàng)中指定的元素推斷而來(lái)的。有關(guān)任何隱式類(lèi)型變量的規(guī)則也適用于隱式類(lèi)型的數(shù)組。
在查詢(xún)表達(dá)式中,隱式類(lèi)型的數(shù)組通常與匿名類(lèi)型以及對(duì)象初始值設(shè)定項(xiàng)和集合初始值設(shè)定項(xiàng)一起使用。
下面的示例演示如何創(chuàng)建隱式類(lèi)型的數(shù)組:
class ImplicitlyTypedArraySample
{
static void Main()
{
var a = new[] { 1, 10, 100, 1000 }; // int[]
var b = new[] { "hello", null, "world" }; // string[]
// single-dimension jagged array
var c = new[]
{
new[]{1,2,3,4},
new[]{5,6,7,8}
};
// jagged array of strings
var d = new[]
{
new[]{"Luca", "Mads", "Luke", "Dinesh"},
new[]{"Karen", "Suma", "Frances"}
};
}
}
請(qǐng)注意,在上一個(gè)示例中,沒(méi)有在初始化語(yǔ)句的左側(cè)對(duì)隱式類(lèi)型的數(shù)組使用方括號(hào)。另請(qǐng)注意,交錯(cuò)數(shù)組就像一維數(shù)組那樣使用 new [] 進(jìn)行初始化。
對(duì)象初始值設(shè)定項(xiàng)中的隱式類(lèi)型的數(shù)組
創(chuàng)建包含數(shù)組的匿名類(lèi)型時(shí),必須在該類(lèi)型的對(duì)象初始值設(shè)定項(xiàng)中對(duì)數(shù)組進(jìn)行隱式類(lèi)型化。在下面的示例中,contacts 是一個(gè)隱式類(lèi)型的匿名類(lèi)型數(shù)組,其中每個(gè)匿名類(lèi)型都包含一個(gè)名為 PhoneNumbers 的數(shù)組。請(qǐng)注意,對(duì)象初始值設(shè)定項(xiàng)內(nèi)部未使用 var 關(guān)鍵字。
var contacts = new[]
{
new {
Name = " Eugene Zabokritski",
PhoneNumbers = new[] { "206-555-0108", "425-555-0001" }
},
new {
Name = " Hanying Feng",
PhoneNumbers = new[] { "650-555-0199" }
}
};
上一篇:理解C#中參數(shù)的值和引用以及傳遞結(jié)構(gòu)和類(lèi)引用的區(qū)別
欄 目:C#教程
下一篇:C#中Override關(guān)鍵字和New關(guān)鍵字的用法詳解
本文標(biāo)題:深入解析C#中的交錯(cuò)數(shù)組與隱式類(lèi)型的數(shù)組
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/6750.html
您可能感興趣的文章
- 01-10深入淺出23種設(shè)計(jì)模式
- 01-10C#中查找Dictionary中的重復(fù)值的方法
- 01-10C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法
- 01-10關(guān)于nancy中的身份驗(yàn)證
- 01-10C#中的事務(wù)用法實(shí)例分析
- 01-10C#實(shí)現(xiàn)讀取DataSet數(shù)據(jù)并顯示在ListView控件中的方法
- 01-10C#中的正則表達(dá)式介紹
- 01-10C#開(kāi)發(fā)中的垃圾回收機(jī)制簡(jiǎn)析
- 01-10C#語(yǔ)言中的修飾符匯總
- 01-10C#中的 == 和equals()區(qū)別淺析


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線(xiàn)程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery


