C#陣列


陣列是一種儲存相同型別元素的固定大小順序集合。陣列用於儲存資料集合,但一般會將陣列視為儲存在連續儲存器位置的相同型別的變數的集合。

如果要儲存表示100名稱學生的分數,需要獨立地宣告100整數變數。例如:number0number1..., number100這樣單個獨立變數。而如果使用一個陣列變數來表示就省事多了。例如,首先宣告陣列:numbers,使用numbers[0]numbers[1]...numbers[99]來表示單個變數,陣列中的元素可通過索引來存取。

所有陣列是由連續的記憶體位置組成。最低的地址對應於第一個元素,而最後一個元素的地址最高。

宣告陣列

要在 C# 中宣告一個陣列,可以使用以下語法:

datatype[] arrayName;

其中 -

  • datatype - 用於指定陣列中元素的型別。
  • [] - 指定陣列序號,rank指定陣列的大小。
  • arrayName - 指定陣列的名稱。

例如,

double[] balance;

初始化陣列

宣告陣列不會將的陣列初始化到記憶體中。將陣列變數初始化時,可以為陣列指定值。

陣列是一個參照型別,因此需要使用new關鍵字來建立陣列的範例。 例如,

double[] balance = new double[10];

陣列賦值

可以通過使用索引數為各個陣列元素分配值,如:

double[] balance = new double[10];
balance[0] = 1500.0;
balance[1] = 1000.0;
balance[2] = 2000.0;

也可以在宣告時為陣列指定值,如下所示:

double[] balance = { 240.08, 523.19, 121.01};

還可以在建立時初始化陣列,如下所示:

int [] marks = new int[5]  { 89,  98, 97, 87, 85};

也可以省略陣列的大小,如下所示:

int [] marks = new int[]  { 100,  97, 96, 97, 95};

可以將陣列變數複製到另一個目標陣列變數中。在這種情況下,目標和源都指向相同的記憶體位置:

int [] marks = new int[]  { 99,  98, 92, 97, 95};
int[] score = marks;

建立陣列時, C# 編譯器會根據陣列型別將每個陣列元素初始化為預設值。 例如,對於int型別的陣列,所有元素都將初始化為0

存取陣列元素

通過索引和陣列名稱來存取陣列的元素。這是通過將元素的索引放在陣列的名稱後面的方括號內完成的。 例如,

double salary = balance[9];

以下範例演示了如何宣告,賦值和存取陣列:

using System;
namespace ArrayApplication
{
   class MyArray
   {
      static void Main(string[] args)
      {
         int []  n = new int[10]; /* n is an array of 10 integers */
         int i,j;

         /* initialize elements of array n */
         for ( i = 0; i < 10; i++ )
         {
            n[ i ] = i + 100;
         }

         /* output each array element's value */
         for (j = 0; j < 10; j++ )
         {
            Console.WriteLine("Element[{0}] = {1}", j, n[j]);
         }
         Console.ReadKey();
      }
   }
}

當編譯和執行上述程式碼時,會產生以下結果:

Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109

使用foreach迴圈

在前面的例子中,我們使用for迴圈存取每個陣列元素。還可以使用foreach語句來遍歷陣列。參考以下程式碼 -

using System;
namespace ArrayApplication
{
   class MyArray
   {
      static void Main(string[] args)
      {
         int []  n = new int[10]; /* n is an array of 10 integers */

         /* initialize elements of array n */
         for ( int i = 0; i < 10; i++ )
         {
            n[i] = i + 100;
         }

         /* output each array element's value */
         foreach (int j in n )
         {
            int i = j-100;
            Console.WriteLine("Element[{0}] = {1}", i, j);

         }
         Console.ReadKey();
      }
   }
}

當編譯和執行上述程式碼時,會產生以下結果:

Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109

C# 陣列型別

C# 程式員應該要清楚以下幾個與陣列有關的重要概念:

概念 描述
多維陣列 C# 支援多維陣列,多維陣列的最簡單形式是二維陣列。
鋸齒陣列 C# 支援多維陣列,它們是陣列的陣列。
將陣列傳遞給函式 可以通過指定陣列的名稱而不使用索引,將陣列傳遞給函式。
引數陣列 這用於將未知數量的引數傳遞給函式。
Array類 System名稱空間中定義,它是所有陣列的基礎類別,並提供了處理陣列的各種屬性和方法。