1. 程式人生 > >C#中的數組【轉】

C#中的數組【轉】

常用屬性 創建 ++ 返回 foreach 限制 允許 [] 總數

目錄

  • 數組的聲明
  • 數組的初始化
  • 數組的訪問
  • 數組的常用屬性和方法

  為方便起見,以下數組均定義為整型

  數組的聲明

    C#聲明數組時,方括號[]必須跟在類型後面,而不是標識符後面

    1. 聲明一維數組

    C#數組的大小不是其類型的一部分,而在C語言中卻是數組類型的一部分  

int[] mySigArray = new int[4];    //聲明數組類型,並使用new關鍵字為他分配內存空間

/*上述聲明可分解為以下兩步*/
int[] mySigArray;                 //聲明數組類型
mySigArray = new int[4];          //使用new關鍵字為他分配內存空間

    另外C#聲明數組時支持分配內存的方括號內是整型變量或變量表達式,只要事先確定了變量的值即可(這個在C語言的C99標準出現之前是不允許的)

int[] mySigArray = new int[n];    //n的值必須事先確定,聲明之後即使改變n的值數組大小也不會變

    2. 聲明多維數組

int[,] myMulArray = new int[4,3]; //聲明二維整型數組

    3. 聲明鋸齒數組(數組的數組)

    多維數組的大小是矩形的,例如3X3(也可以是是4×3,只需每行大小相同)個元素。而鋸齒數組的大小設置比較靈活,在鋸齒數組中,每一行都可以有不同的大小,如下圖,鋸齒數組成鋸齒狀

    技術分享

int[][] mySawArray = new int[3][];      //註意與二維數組不同,這裏有兩個方括號

  數組的初始化

  如果有初始化數據,可以用以下最簡單的形式初始化

int[] mySigArray = {1,2,3,4};                  //一維數組初始化
int[,] myMulArray = {{1,2,3},{4,5,6},{7,8,9}};     //二維數組初始化
int[][] mySawArray = {new int[] {1,2},new int[] {3,4,5,6,7,8},new int[] {9,10,11}};   //鋸齒數組初始化

使用Array的Clear來初始化數組

byte[] tt = new byte[2147483591];
Array.Clear(tt, 0, tt.Length)

  數組的訪問

    1. 訪問上述初始化的的數組中單個元素

int i = mySigArray[2];        //i=3
int j = myMulArray[2,1];     //j=8
int k = mySawArray[2][1];     //k=10  註意二維數組與鋸齒數組的區別

    2. 遍歷訪問數組元素

    C#提供了foreach語句,該語句提供了一種簡單、明了的方法來循環訪問數組

foreach(int m in myArray)      //將所有數組元素的值加1,myArray可以是一維、多維或鋸齒數組
{
    m++;
}    

    另外也可以用for循環遍歷數組,使用這種方式可以更好的控制數組元素(知道每次循環中的數組對象是哪個),下面這段代碼用foreach語句是無法實現的

技術分享
 for (int i = 0; i< mySawArray.Length; i++)
{
    for (int j = 0; j < mySawArray[i].Length; j++)
    {
            myMulArray[i,j]=mySawArray[i][j];    //把鋸齒數組的每個元素賦值給二維數組中相應的元素
    }
}
技術分享

  

  數組的常用屬性和方法

  在C#中,數組實際上是對象。System.Array是所有數組類型的抽象基類型,提供創建、操作、搜索和排序數組的方法,因此所有的數組都可以使用它的屬性和方法

    1. 常用屬性

    Length:獲得一個32位整數,該整數表示Array的所有維數中元素的總數,即數組的元素個數,常用來限制數組下標的大小

  

    2. 常用方法

      2.1 數組的復制

      在C#中,數組的復制一般分為以下三種:

技術分享
int[] pins = {3,9,7,2};

int[] copy1 = new int[pins.Length];
pins.CopyTo(copy1,0);   //使用數組對象的CopyTo()方法進行復制,參數0表示從copy1數組的第一個元素(下標是0)開始放置從pins數組復制過來的值

int[] copy2 = new int[pins.Length];
Array.Copy(pins,copy2,copy2.Length); //使用Array類的一個靜態方法Copy(),參數copy2.Length表示從pins數組的第一個元素開始到copy2數組所能容納的最後一個元素(copy2.Length)都復制到copy2數組

int[] copy3 = (int[])pins.Clone(); //使用數組對象的Clone()方法,它會創建一個新的數組,返回值是一個對象,所以需要強制類型轉換成恰當的類型
技術分享

      2.2 數組的排序

      排序是編程中常用的算法之一。C#中提供了兩個數組排序的方法:

      Array.Sort(Array)用於對數組進行從小到大排序

      Array.Reverse(Array)用於對數組進行反向排序

int[] pins = {3,9,7,2};
Array.Sort(pins);      //pins={2,3,7,9}
Array.Reverse(pins);    //pins={9,7,3,2}

C#中的數組【轉】