C#中的矩形數(shù)組(多維數(shù)組)和鋸齒數(shù)組的實(shí)現(xiàn)
(一)矩形數(shù)組
在C#中,矩形數(shù)組(rectangular array),又稱多維數(shù)組,是使用多個(gè)索引訪問(wèn)其元素的數(shù)組。
1. 二維數(shù)組的聲明:
<baseType>[,] <name>;
例如,聲明和初始化一個(gè)二維數(shù)組doubleArray,其基本類型是double,3行4列:
double[,] doubleArray=new double[3,4]; double[,] doubleArray={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
當(dāng)然,我們還可以這樣對(duì)doubleArray進(jìn)行定義和初始化:
double[,] doubleArray=new double[3,4]{{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2. 根據(jù)索引訪問(wèn)數(shù)組中的元素
訪問(wèn)數(shù)組中行號(hào)為1,列號(hào)為2(第2行,第3列)的數(shù)組元素:
Console.WriteLine(doubleArray[1,2]);//控制臺(tái)輸出7
3. 遍歷二維數(shù)組
(1)獲取多維數(shù)組的維度
int rank=doubleArray.Rank;//rank=2,表示doubleArray數(shù)組的維度為2
(2)for循環(huán)遍歷
//for循環(huán)遍歷doubleArray數(shù)組 for(int i=0;i<doubleArray.GetLength(0);i++)//GetLength(0)獲取數(shù)組行數(shù) { for(int j=0;j<doubleArray.GetLength(1);j++)//GetLength(1)獲取數(shù)組列數(shù) { Console.Write(doubleArray[i,j]+"\t");//打印索引為[i,j]的數(shù)組元素 } Console.WriteLine();//打印完一行換行 }
(3)foreach遍歷
//foreach遍歷doubleArray數(shù)組 foreach(double item in doubleArray) { Console.Write(item + "\t");//依次輸出doubleArray數(shù)組中的元素 }
4. 其他多維數(shù)組
其他多維數(shù)組需要更多的逗號(hào)隔開(kāi),聲明格式:
<baseType>[,,] <name>;//三維數(shù)組 <baseType>[,,,] <name>;//四維數(shù)組 <baseType>[,,,,] <name>;//五維數(shù)組 ...
(二)鋸齒數(shù)組
上述的矩形數(shù)組,它要求數(shù)組每一行的元素個(gè)數(shù)相同,但對(duì)于鋸齒數(shù)組(jagged array),它可以使數(shù)組中每行的元素個(gè)數(shù)不同。
鋸齒數(shù)組又稱為交錯(cuò)數(shù)組,數(shù)組中的每一個(gè)元素都是另一個(gè)數(shù)組,所有鋸齒數(shù)組也叫作數(shù)組的數(shù)組,但是要注意,這些數(shù)組都必須要有相同的基本類型。
1. 鋸齒數(shù)組的聲明和初始化
(1)鋸齒數(shù)組聲明
int[][] jaggedArray;//聲明一個(gè)int型鋸齒數(shù)組jaggedArray
(2)鋸齒數(shù)組初始化
初始化jaggedArray數(shù)組含有2個(gè)子數(shù)組(即數(shù)值中2個(gè)元素為另外2個(gè)數(shù)組)
jaggedArray = new int[2][];//初始化jaggedArray數(shù)組 jaggedArray[0] = new int[3] { 1, 2, 3 };//第一個(gè)元素為一個(gè)長(zhǎng)度為3的一維數(shù)組 jaggedArray[1] = new int[4] { 4, 5, 6, 7 };//第二個(gè)元素為一個(gè)長(zhǎng)度為4的一維數(shù)組
還可以改進(jìn)鋸齒數(shù)組的聲明和初始化,將聲明和初始化寫(xiě)在一行代碼:
int[][] jaggedArray = new int[2][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7 } };
2. 遍歷鋸齒數(shù)組
(1)for循環(huán)遍歷
//for循環(huán)遍歷jaggedArray數(shù)組 for(int i = 0; i < jaggedArray.Length; i++)//遍歷數(shù)組的行數(shù) { for (int j = 0; j < jaggedArray[i].Length; j++)//遍歷數(shù)組中每一個(gè)行的元素(一維數(shù)組) { Console.Write(jaggedArray[i][j]+"\t");//打印jaggedArray[i][j] } Console.WriteLine();//輸出完一行換行 }
(2)foreach遍歷
//foreach遍歷jaggedArray數(shù)組 foreach(int[] int_item in jaggedArray)//遍歷鋸齒數(shù)中的每個(gè)子數(shù)組,類型為int[] { foreach(int item in int_item)//遍歷每個(gè)子數(shù)組中的元素,類型為int { Console.Write(item + "\t");//依次輸出鋸齒數(shù)組中的元素 } }
總結(jié)
使用鋸齒數(shù)組的語(yǔ)法,不管是數(shù)組的聲明和初始化,還是數(shù)組的遍歷,都要比矩形數(shù)組復(fù)雜的多。在大多數(shù)情況下,使用矩形數(shù)組比較簡(jiǎn)單,它也是一種比較簡(jiǎn)單的存儲(chǔ)方式。但是,有時(shí)必須使用鋸齒數(shù)組,且工作效率并不會(huì)因此而降低。
到此這篇關(guān)于C#中的矩形數(shù)組(多維數(shù)組)和鋸齒數(shù)組的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# 矩形數(shù)組和鋸齒數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WinForm項(xiàng)目開(kāi)發(fā)中WebBrowser用法實(shí)例匯總
這篇文章主要介紹了WinForm項(xiàng)目開(kāi)發(fā)中WebBrowser用法,需要的朋友可以參考下2014-08-08關(guān)于C#.net winform程序驗(yàn)證moss的集成身份認(rèn)證實(shí)例
因?yàn)榫W(wǎng)站使用的是windows集成認(rèn)證,所以遇到了權(quán)限問(wèn)題,需要輸入密碼。使操作和用戶體驗(yàn)非常不方便,研究了好久沒(méi)有找到好的方法,最后終于讓我踏破鐵鞋總結(jié)出了下面的方法2013-03-03c# winform讀取xml文件創(chuàng)建菜單的代碼
動(dòng)態(tài)創(chuàng)建菜單使得程序靈活性大大增加,本文根據(jù)讀取xml文件中的配置菜單項(xiàng)來(lái)動(dòng)態(tài)創(chuàng)建菜單,代碼如下2013-09-09理解C#編程中的靜態(tài)類和靜態(tài)成員以及密封類
這篇文章主要介紹了理解C#編程中的靜態(tài)類和靜態(tài)成員以及密封類,注意類成員的相關(guān)訪問(wèn)限制和類的繼承問(wèn)題,需要的朋友可以參考下2016-01-01