C#中的數組

來源:互聯網
上載者:User

標籤:

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

  一、數組聲明

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

    1. 聲明一維數組

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

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

 

    另外C#聲明數組時支援分配記憶體的方括弧內是整型變數或Variant 運算式,只要事先確定了變數的值即可(這個在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}};   //鋸齒數組初始化

 

 

  三、數組的訪問

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

int i = mySigArray[2];        //i=3int j = myMulArray[2,1];     //j=8int 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#中的數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.