C#數組初始化


C#的數組初始化是在聲明數組時將初始值放在大括號({})之內。如果沒有指定初始值,則數組成員將自動初始化為該數組類型的默認初始值。請閱讀數組的屬性。如果將數組聲明為某類型的字段,則當實例化該類型時它將被設置為默認值null。

一、一維數組的初始化

1. 在聲明數組時將其初始化。如:

int[] array = new int[6]{1,2,3,4,5,6};
string[] stringArray = new string[3]{"string1", "string2", "string3"};2. 可以省略數組的大小。如:

int[] array = new int[]{1,2,3,4,5,6};
string[] stringArray = new string[]{"string1", "string2", "string3"};3. 如果提供了初始值設定項,還可以省略new運算符。如:

int[] array = {1,2,3,4,5,6};
string[] stringArray = {"string1", "string2", "string3"};4. 聲明一個數組變量但不將其初始化,等到將數組分配給此變量時必須使用new運算符。如:

int[] array;
array = new int[]{1,2,3,4,5};
string[] stringArray;
stringArray = new string[]{"string1", "string2", "string3"};二、多維數組的初始化

1. 聲明數組時將其初始化。如:

int[,] array2D = new int[,]{{1,2},{3,4},{5,6}};     // 二維數組
int[,,] array3D = new int[,,]{{{1,2,3}},{{4,5,6}}}; // 三維數組對於二維數組array2D來說,這是一個3行2列的二維數組。3行分別是{1,2}、{3,4}和{5,6}這三行,每一行都用大括號{}括起來,第1行{1,2}用0表示,第2行{3,4}用1表示,第3行{5,6}用2表示。

每一行大括號內表示的是列,對於array2D來說,每一行都是2列,用0、1表示。那么這個數組就是3行2列。

那么array2D的第3行2列的元素就是array2D[2][1]=6。

二維數組就是一個二維的矩陣,只有x,y兩個維度,好像一個平面,用strArr[x,y]可以定位到矩陣中的任何一個元素。遍歷二維的矩陣一般需要兩層循環。

在這里,再舉幾個三維數組的例子:

int[,,] array3D = new int[,,]{
                                 {{1,2,3,4},{5,6,7,8},{9,10,11,12}},
                                 {{13,14,15,16},{17,18,19,20},{21,22,23,24}}
                             };
相當於int[2,3,4]。

?第一維是4:指的是最里層大括號({})內的4個元素。分別是1,2,3,4或者5,,6,7,8。

?第二維是3:指的是第二層內三個大括號部分。分別是{1,2,3,4}、{5,6,7,8}和{9,10,11,12}部分。

?第三維是2:指的是第一層內兩個大括號部分。分別是{{1,2,3,4},{5,6,7,8},{9,10,11,12}}和{{13,14,15,16},{17,18,19,20},{21,22,23,24}}。
int[,,] array3D = new int[,,]{{{1,2,3}},{{4,5,6}},{{7,8,9}}};相當於int[3,1,3]。

int[,,] array3D = new int[,,]{{{1},{2},{3}},{{4},{5},{6}},{{7},{8},{9}}};相當於int[3,3,1]。

int[,,] array3D = new int[,,]{{{1,2,3},{4,5,6},{7,8,9}}};相當於int[1,3,3]。

三維數組有三個維度,好像一個立方體,需要用strArr[x,y,z]才能定位到矩陣中的元素,因此,如果需要遍歷,必須使用三個嵌套的循環。

一個簡單的覆蓋三維矩陣的例子是:

for(int i=0; i<x; i++)
{
    for(int j=0; j<y; j++)
    {
        for(int k=0; k<z; k++)
        {
            Console.WriteLine(strArr[i, j, k]);
        }
    }
}

2. 初始化數組時不需要指定級別。如:

int[,] array2D = {{1,2},{3,4},{5,6}};3. 聲明一個數組變量但不將其初始化,等到將數組分配給此變量時必須使用new運算符。如:

int[,] array2D;
array2D = new int[,]{{1,2},{3,4},{5,6}};4. 將數組變量初始化為默認值(交錯數組除外)。如:

int[,] array = new int[2,3];5. 可以給數組的元素賦值。如:

array[3,4] = 10;

三、交錯數組的初始化

1. 聲明一個一維數組,數組中的5個元素都是一維整數數組:

int[][] jiaoArray = new int[5][];初始化jiaoArray數組的元素:

jiaoArray[0] = new int[10];
jiaoArray[1] = new int[9];
jiaoArray[2] = new int[8];
jiaoArray[3] = new int[7];
jiaoArray[4] = new int[6];元素初始化以后就可以使用了。

2. 使用初始值設定項將值填充給數組元素,此時不需要設置數組大小。如:
 
jiaoArray[0] = new int[]{1,2,3,4,5}; // 初始化數組第一個元素:5個整數組成的數組
jiaoArray[1] = new int[]{2,4,6,8};   // 初始化數組第二個元素:4個整數組成的數組
jiaoArray[2] = new int[]{1,3,5};     // 初始化數組第三個元素:3個整數組成的數組

3. 聲明數組時進行初始化。如:

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

4. 可以使用下面的格式:

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

5. 交錯數組的元素是引用類型,初始化為null。我們可以訪問個別數組元素:

jiaoArray[0][1] = 5;  // 將5賦給第1個數組[0]的第2個元素[1]
jiaoArray[3][2] = 7;  // 將7賦給第4個數組[3]的第3個元素[2]

6. 可以混合使用交錯數組和多維數組。下面聲明和初始化一個一維交錯數組,該數組包含大小不同的二維數組元素:

int[][,] jiaoArray = new int[3][,]
{
    new int[,]{{1,2},{3,4}},
    new int[,]{{11,22},{33,44},{55,66}},
    new int[,]{{111,222},{333,444},{555,666}}
};

我們可以訪問個別元素,下面的例子顯示第一個數組的元素[1,0]的值3:

Console.WriteLine("{0}",jiaoArray[0][1,0]);Length方法返回包含在交錯數組中的數組的個數。

Console.WriteLine(jiaoArray.Length);  // 返回值3

四、示例

示例一
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            // C#交錯數組的初始化-www.baike369.com
            // 交錯數組:聲明一個2個元素的一維數組,數組中的元素都是一維整數數組
            int[][] array = new int[2][];
            array[0] = new int[4] { 1, 2, 3, 4 }; // 初始化數組的元素
            array[1] = new int[5] { 0, 2, 4, 6, 8 }; // 初始化數組的元素
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write("元素({0}):", i);// 顯示交錯數組的元素
                //顯示交錯數組中的每一個元素的值,這個值是一個一維整數數組
                for (int j = 0; j < array[i].Length; j++)
                {
                    Console.Write("{0}{1}", array[i][j],
                        j==(array[i].Length-1)?"":" ");
                }
                Console.WriteLine(""); // 將每一個交錯數組的元素換行
            }
            Console.ReadLine();
        }
    }
}

運行結果:
 
元素(0):1 2 3 4
元素(1):0 2 4 6 8其中

j==(array[i].Length-1)?"":" "將交錯數組中的元素的值,即一維整數數組的元素之間添加空格。請閱讀C#條件運算符(?:)。

示例二
  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            // 二維數組
            int[,] array = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
            int array1 = array[3, 1];
            // 三維數組
            int[, ,] array3D = new int[,,]{
                {{1,2,3,4},{5,6,7,8},{9,10,11,12}},
                {{13,14,15,16},{17,18,19,20},{21,22,23,24}}
                };
            int array2 = array3D[1, 2, 3];
            Console.WriteLine("array[3,1](二維數組):{0}", array1);
            Console.WriteLine("array3D[1,2,3](三維數組):{0}", array2);
            Console.ReadLine();
        }
    }
}

運行結果:
 
array[3,1](二維數組):8
array3D[1,2,3](三維數組):24

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM