C# 數(shù)組(Array)

變量用于存儲字面量值,而數(shù)組用于存儲多個字面量值。

數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它存儲相同數(shù)據(jù)類型的固定數(shù)量的文本值(元素)。數(shù)組元素連續(xù)地存儲在內(nèi)存中。

在C#中,數(shù)組可以為三種類型:一維數(shù)組,多維數(shù)組 和 鋸齒數(shù)組。在這里,您將了解一維數(shù)組。

下圖說明了數(shù)組表示形式。

數(shù)組表示

數(shù)組聲明和初始化

可以使用方括號指定數(shù)組的元素類型來聲明數(shù)組。

int[] evenNums;  // 整數(shù)數(shù)組

string[] cities; // 字符串?dāng)?shù)組

以下語句在單個語句中聲明并將值添加到數(shù)組中。

int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; 

string[] cities = new string[3]{ "Mumbai", "London", "New York" };

在上面,evenNums 數(shù)組最多可以存儲五個整數(shù)。new int[5] 方括號中的數(shù)字 5 是指定數(shù)組的大小。同樣,cities 數(shù)組的大小為3。數(shù)組元素被添加到大括號 {} 中以逗號分隔的列表中。

數(shù)組類型變量可以使用 var 聲明,而沒有方括號 []。

var evenNums = new int[]{ 2, 4, 6, 8, 10}; 

var cities = new string[]{ "Mumbai", "London", "New York" };

如果要在聲明時添加數(shù)組元素,則 size 是可選的。編譯器將根據(jù)花括號內(nèi)的元素數(shù)量推斷其大小,如下所示。

int[] evenNums = { 2, 4, 6, 8, 10}; 

string[] cities = { "Mumbai", "London", "New York" }

下面的示例演示無效的數(shù)組聲明。

//必須指定大小 
int[] evenNums = new int[]; 

//元素數(shù)必須等于指定的大小 
int[] evenNums = new int[5] { 2, 4 };

//不能將var與數(shù)組初始化程序一起使用
var evenNums = { 2, 4, 6, 8, 10};

延遲初始化

不必在單個語句中聲明和初始化數(shù)組。您可以先聲明一個數(shù)組,然后再使用 new 運算符對其進(jìn)行初始化。

int[] evenNums;

evenNums = new int[5];

// 或

evenNums = new int[]{ 2, 4, 6, 8, 10 };

訪問數(shù)組元素

可以使用索引訪問數(shù)組元素。索引是與每個數(shù)組元素關(guān)聯(lián)的數(shù)字,從索引 0 開始 到 數(shù)組大小-1 結(jié)束。

以下示例使用索引添加/更新和檢索數(shù)組元素。

int[] evenNums = new int[5];
evenNums[0] = 2;
evenNums[1] = 4;
//evenNums[6] = 12;  //拋出運行時異常IndexOutOfRange

Console.WriteLine(evenNums[0]);  //輸出 2
Console.WriteLine(evenNums[1]);  //輸出 4

請注意,嘗試添加超出其指定大小的元素會拋出 IndexOutOfRangeException 異常。

使用for循環(huán)訪問數(shù)組

使用for循環(huán)訪問數(shù)組元素。在for循環(huán)的條件表達(dá)式中使用數(shù)組的 length 屬性。

int[] evenNums = { 2, 4, 6, 8, 10 };

for(int i = 0; i < evenNums.Length; i++){
    Console.WriteLine(evenNums[i]);  
}

for(int i = 0; i < evenNums.Length; i++){
    evenNums[i] = evenNums[i] + 10;  // 將每個元素的值更新10
}

使用 foreach 循環(huán)訪問數(shù)組

使用foreach循環(huán)讀取數(shù)組元素的值而不使用索引。

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }; 

foreach(var item in evenNums){
    Console.WriteLine(item);   
}

foreach(var city in cities){
    Console.WriteLine(city);
}

LINQ方法

C#中的所有數(shù)組均派生自抽象基類 System.Array。

Array類實現(xiàn)了IEnumerable接口,這樣你就可以LINQ擴展方法,如 Max(),Min(),Sum(),reverse()等。

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };

nums.Max(); // 返回16
nums.Min(); // 返回6
nums.Sum(); // 返回55
nums.Average(); // 返回55

System.Array 類還包括用于創(chuàng)建,操作,搜索和數(shù)組排序的方法。

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };

Array.Sort(nums); // 排序數(shù)組 
Array.Reverse(nums); // 排序數(shù)組 in descending order
Array.ForEach(nums, n => Console.WriteLine(n)); // 迭代數(shù)組
Array.BinarySearch(nums, 5);// 二進(jìn)制搜索

將數(shù)組作為參數(shù)傳遞

可以將數(shù)組作為參數(shù)傳遞給方法參數(shù)。數(shù)組是引用類型,因此該方法可以更改數(shù)組元素的值。

public static void Main(){
    int[] nums = { 1, 2, 3, 4, 5 };

    UpdateArray(nums); 

    foreach(var item in nums)
        Console.WriteLine(item);   
}
                    
public static void UpdateArray(int[] arr)
{
    for(int i = 0; i < arr.Length; i++)
        arr[i] = arr[i] + 10;   
}

接下來了解 多維數(shù)組鋸齒數(shù)組。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清