C# 多維數(shù)組

2018-01-16 01:27 更新

C#多維數(shù)組

多維數(shù)組有兩種類型:矩形和鋸齒。

矩形陣列表示存儲器的n維塊,鋸齒形陣列是陣列陣列。

矩形數(shù)組

使用逗號分隔每個(gè)維度來聲明矩形數(shù)組。

以下聲明一個(gè)矩形二維數(shù)組,其中維度為3乘3:


int[,] matrix = new int[3,3]; 

數(shù)組的 GetLength 方法返回從0開始的給定維度的長度:


for (int i = 0; i < matrix.GetLength(0); i++) {
    for (int j = 0; j < matrix.GetLength(1); j++) {
        matrix[i,j] = i * 3 + j; 
    }
}

矩形數(shù)組可以初始化如下:


int[,] matrix = new int[,] { 
                        {0,1,2}, 
                        {3,4,5}, 
                        {6,7,8} 
                        }; 

鋸齒數(shù)組

鋸齒數(shù)組使用連續(xù)的方括號來表示每個(gè)維度。

這里是一個(gè)聲明一個(gè)鋸齒狀的二維數(shù)組的例子,其中最外面的維度是3:


int[][] matrix = new int[3][]; 

內(nèi)部尺寸未在聲明中指定,每個(gè)內(nèi)部數(shù)組可以是任意長度。

每個(gè)內(nèi)部數(shù)組都隱式初始化為null,而不是一個(gè)空數(shù)組。

每個(gè)內(nèi)部數(shù)組必須手動(dòng)創(chuàng)建:


for (int i = 0; i < matrix.Length; i++) { 
    matrix[i] = new int[3]; // Create inner array 
    for (int j = 0; j < matrix[i].Length; j++)
        matrix[i][j] = i * 3 + j; 
    } 
}

鋸齒數(shù)組可以初始化如下:


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

數(shù)組初始化

有兩種方法可以縮短數(shù)組初始化表達(dá)式。

第一個(gè)是省略new運(yùn)算符和類型限定:


char[] vowels = {"a","e","i","o","u"}; 
int[,] rectangularMatrix = { 
    {0,1,2}, 
    {3,4,5}, 
    {6,7,8} 
}; 

int[][] jaggedMatrix = { 
    new int[] {0,1,2}, 
    new int[] {3,4,5,2,2,2,2}, 
    new int[] {6,7,8} 
}; 

第二種方法是使用var關(guān)鍵字,它告訴編譯器隱式地鍵入一個(gè)局部變量:


var i = 3; // i is implicitly of type int 
var s = "asdf"; // s is implicitly of type string 

var rectMatrix = new int[,]{ 
    {0,1,2}, 
    {3,4,5}, 
    {6,7,8} 
}; 

var jaggedMatrix = new int[][]{
     new int[] {0,1,2},
     new int[] {3,4,5},
     new int[] {6,7,8} 
}; 

我們可以省略new關(guān)鍵字后的類型限定符,并讓編譯器推斷數(shù)組類型:

var letters = new [] {'a','e','i','o','u'}; //編譯器推斷char []

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號