小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C#數(shù)組教程

 小小243 2013-12-30

C#數(shù)組教程

第二篇:C#數(shù)組教程之2


I、基礎(chǔ)部分

一、數(shù)組概述

·數(shù)組是一組具有相同類型和名稱的變量的集合。

·這些變量稱為數(shù)組的元素,每個(gè)數(shù)組元素都有一個(gè)編號(hào),這個(gè)編號(hào)叫做下標(biāo),我們可以通過下標(biāo)來區(qū)別這些元素。

·數(shù)組元素的個(gè)數(shù)被稱為數(shù)組的長(zhǎng)度。

·一般情況下,數(shù)組的元素類型必須相同。但在PHP等中有所改變。

·C#中,數(shù)組是System.Array類的一個(gè)實(shí)例。

·優(yōu)缺點(diǎn):優(yōu)點(diǎn):高效訪問給定下標(biāo)的元素,編程簡(jiǎn)單、直觀。缺點(diǎn):實(shí)例化時(shí)必須指定數(shù)組的大小,之后不能增刪元素(也就是非動(dòng)態(tài))。

C#中的數(shù)組:

· C# 數(shù)組中每個(gè)元素的類型必須相同;

· C# 數(shù)組的下標(biāo)是從 0 開始;

· C# 中沒有動(dòng)態(tài)數(shù)組,但可以用ArrayList實(shí)現(xiàn)類似動(dòng)態(tài)數(shù)組的功能;

· C# 中支持多維數(shù)組及交錯(cuò)數(shù)組(Jagged Array)。

C# 支持一維數(shù)組、多維數(shù)組(矩形數(shù)組)和鋸齒型數(shù)組(或叫交錯(cuò)數(shù)組,數(shù)組的數(shù)組)。

二、聲明、實(shí)例化和初始化數(shù)組

1.聲明數(shù)組

下面的示例展示如何聲明不同類型的數(shù)組:

一維數(shù)組:

int[] numbers;

多維數(shù)組:

string[,] names;

交錯(cuò)數(shù)組(數(shù)組中的數(shù)組):

byte[][] scores;

2、實(shí)例化數(shù)組

聲明數(shù)組(如上所示)并不實(shí)際創(chuàng)建它們。在 C# 中,數(shù)組是對(duì)象(事實(shí)上,C#和.NET Framework中的所有東西都是對(duì)象),必須進(jìn)行實(shí)例化。下面的示例展示如何創(chuàng)建數(shù)組:

一維數(shù)組:

int[] numbers = new int[5];

常見問題:

int[3] arr; //錯(cuò)誤,不能這樣指定數(shù)組大小

應(yīng)該是:

int[] arr = new int[3]; //正確,聲明一個(gè)長(zhǎng)度為 3 的 int 類型數(shù)組,[]中的數(shù)字表示長(zhǎng)度不是下標(biāo)的上界。

多維數(shù)組:

string[,] names = new string[5,4];

交錯(cuò)數(shù)組(鋸齒數(shù)組或“數(shù)組的數(shù)組”):

交錯(cuò)數(shù)組是指數(shù)組的元素又是一個(gè)數(shù)組,這和多維數(shù)組是不一樣的,也就是說,交錯(cuò)數(shù)組就是“數(shù)組的數(shù)組”。

byte[][] scores = new byte[5][];

for (int x = 0; x < scores.Length; x++) 

{

   scores[x] = new byte[4];

}

還可以有更大的數(shù)組。例如,可以有三維的矩形數(shù)組:

int[,,] buttons = new int[4,5,3];

甚至可以將矩形數(shù)組和交錯(cuò)數(shù)組混合使用。例如,下面的代碼聲明了類型為 int 的二維數(shù)組的三維數(shù)組的一維數(shù)組。

int[][,,][,] numbers;

聲明數(shù)組

int[][] arr = new int[3][];

arr[0] = new int[7];

arr[1] = new int[8];

arr[2] = new int[9];

以上數(shù)組中 arr 是一個(gè)長(zhǎng)度為 3 的數(shù)組。

arr 的第一個(gè)元素是一個(gè)長(zhǎng)度為 7 的數(shù)組,第二個(gè)元素是一個(gè)長(zhǎng)度為 8 的數(shù)組,第三個(gè)元素是一個(gè)長(zhǎng)度為 9 的數(shù)組。

一定注意: int[][] arr = new int[3][]; 不能寫成 int[] arr = new int[3];

另外,初始化時(shí)第二個(gè)中括號(hào)中也不能有數(shù)值。

3、初始化數(shù)組

C# 通過將初始值括在大括號(hào) ({}) 內(nèi)為在聲明時(shí)初始化數(shù)組提供了簡(jiǎn)單而直接了當(dāng)?shù)姆椒āO旅娴氖纠故境跏蓟煌愋偷臄?shù)組的各種方法。

如上述的numbers可以用下面方式初始化:

numbers[0] = 1;

numbers[1] = 2;

numbers[2] = 3;

numbers[3] = 4;

numbers[4] = 5;

上述初始化方式很不簡(jiǎn)潔,較簡(jiǎn)潔的方式是:

numbers = new int[]{1,2,3,4,5};

4.簡(jiǎn)潔化的做法

事實(shí)上,可以將聲明、實(shí)例化和初始化放在一起,變得更加簡(jiǎn)潔方便,比如:

一維數(shù)組

聲明數(shù)組并賦初值

int[] numbers = new int[]{1,2,3,4,5,6}; //不定長(zhǎng) 

int[] numbers = new int[5] {1, 2, 3, 4, 5};//定長(zhǎng)

string[] names = new string[3] {"Matt", "Joanne", "Robert"};

Note: [] 跟在類型名之后表示是個(gè)數(shù)組,{} 表示要賦的初值列表,各個(gè)初值之間用英文逗號(hào)(,)隔開。

可省略數(shù)組的大小,如下所示:

int[] numbers = new int[] {1, 2, 3, 4, 5};

string[] names = new string[] {"Matt", "Joanne", "Robert"};

如果提供了初始值設(shè)定項(xiàng),則還可以省略 new 運(yùn)算符,如下所示:

int[] numbers = {1, 2, 3, 4, 5};

string[] names = {"Matt", "Joanne", "Robert"};

C# 數(shù)組也支持動(dòng)態(tài)指定

int len = 3;

int[] arr = new int[len];

多維數(shù)組

int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };//定長(zhǎng)

第一維的長(zhǎng)度為 3,第二維的長(zhǎng)度為 2。

string[,] siblings = new string[2, 2] { {"Johnson","Ju"}, {"Mary","Albert"} };

可省略數(shù)組的大小,如:

int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} };

string[,] siblings = new string[,] { {"Johnson","Ju"}, {"Mary","Albert"} };

如提供了初始值設(shè)定項(xiàng),則還可以省略 new 運(yùn)算符,如:

int[,] numbers = { {1, 2}, {3, 4}, {5, 6} };

賦值為“橫向掃描”賦值,該例相當(dāng)于:

numbers[0, 0] = 1;

numbers[0, 1] = 2;

numbers[1, 0] = 3;

numbers[1, 1] = 4;

numbers[2, 0] = 5;

numbers[2, 1] = 6;

string[,] siblings = { {"Johnson", "Ju"}, {"Mary", "Albert"} };

交錯(cuò)的數(shù)組(數(shù)組的數(shù)組)

可以像下例所示那樣初始化交錯(cuò)的數(shù)組:

int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

可省略第一個(gè)數(shù)組的大小,如下所示:

int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

或:

int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

請(qǐng)注意,對(duì)于交錯(cuò)數(shù)組的元素沒有初始化語法。

int[][] arr = new int[2][];

numbers[0] = new int[3];

numbers[1] = new int[5];

numbers[0][0] = 2;

如果此時(shí)設(shè)置:

numbers[0][2] = 6;那么:

numbers = { new int[] {2,3,6}, new int[] {5,6,7,8,9} };

我們可以把numbers當(dāng)作一個(gè)一維數(shù)組來對(duì)待,數(shù)組的數(shù)組又可以當(dāng)作一維數(shù)組來對(duì)待。

交錯(cuò)數(shù)組也可以是“數(shù)組的數(shù)組的數(shù)組”,以此類推:

int[][][] arr = new int[3][][];

arr[0] = new int[7][];

arr[0][0] = new int[3];

//...

注意   如果在聲明時(shí)沒有初始化數(shù)組,則數(shù)組成員將自動(dòng)初始化為該數(shù)組類型的默認(rèn)初始值。另外,如果將數(shù)組聲明為某類型的字段,則當(dāng)實(shí)例化該類型時(shí)它將被設(shè)置為默認(rèn)值 null。

三、數(shù)組的賦值取值

1、訪問數(shù)組成員

訪問數(shù)組成員可以直接進(jìn)行,類似于在 C/C++ 中訪問數(shù)組成員。

(1)位置定位法

例如:

int[] arr = new int[3];

arr[0] = 10; //給第一個(gè)元素賦值

int m = arr[0]; //取第一個(gè)元素的值

下面的代碼創(chuàng)建一個(gè)名為 numbers 的數(shù)組,然后向該數(shù)組的第五個(gè)元素賦以 5:

int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

numbers[4] = 5; //注意索引是從0開始

下面的代碼聲明一個(gè)多維數(shù)組,并向位于 [1, 1] 的成員賦以 5:

int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} };

numbers[1, 1] = 5;

下面聲明一個(gè)一維交錯(cuò)數(shù)組,它包含兩個(gè)元素。第一個(gè)元素是兩個(gè)整數(shù)的數(shù)組,第二個(gè)元素是三個(gè)整數(shù)的數(shù)組:

int[][] numbers = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5}

};

下面的語句向第一個(gè)數(shù)組的第一個(gè)元素賦以 58,向第二個(gè)數(shù)組的第二個(gè)元素賦以 667:

numbers[0][0] = 58;

numbers[1][1] = 667;

(2)循環(huán)訪問法

對(duì)數(shù)組使用 foreach

C# 還提供 foreach 語句。該語句提供一種簡(jiǎn)單、明了的方法來循環(huán)訪問數(shù)組的元素。例如,下面的代碼創(chuàng)建一個(gè)名為 numbers 的數(shù)組,并用 foreach 語句循環(huán)訪問該數(shù)組:

int[] numbers = {4, 5, 6, 1, 2, 3, -2, -1, 0};

foreach (int i in numbers)

{

   System.Console.WriteLine(i);

}

由于有了多維數(shù)組,可以使用相垃圾廣告法來循環(huán)訪問元素,例如:

int[,] numbers = new int[3, 2] {{111}, {222}, {333}};

<SPA           

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多