數組在 C# 中如何運作?

WBOY
發布: 2023-09-10 09:41:08
轉載
1307 人瀏覽過

数组在 C# 中如何工作?

陣列表示給定類型的固定數量的元素。元素儲存在連續的記憶體區塊中,只要您知道元素的索引,就可以有效率地存取元素。

宣告和初始化陣列的 C# 語法如下 -

// create a string array to hold 5 languages
string[] languages = new string[3];
登入後複製

宣告陣列後,您可以使用陣列上的平方符號來填入陣列中的項目。

languages[0] = "csharp";
languages[1] = "visual basic";
languages[2] = "f#";
登入後複製

但是,有一個替代的簡潔語法可以將上述兩個步驟組合在一個步驟中。

string[] languages = new string[] { "csharp", "visual basic", "f#" };
登入後複製

使用 C# 中的隱式類型變量,您可以去掉變數名稱左側的類型,而只使用 var。

var languages = new string[] { "csharp", "visual basic", "f#" };
登入後複製

您可以使用相同的平方表示法來存取陣列中的任何元素。

string language = languages[0];
Console.WriteLine(language); // prints csharp
登入後複製

陣列的 Length 屬性告訴我們該陣列中有多少項。

int count = languages.Length;
Console.WriteLine(count); // 3
登入後複製

請務必記住,陣列一旦建立就無法更改其長度。嘗試存取數組邊界之外的元素會引發異常。

string lang = languages[3]; // throws System.IndexOutOfRangeException
登入後複製

如果要循環數組,請使用該語言提供的 for 或 foreach 迴圈。

// for loop
for (int i = 0; i < languages.Length; i++){
   string l = languages[i];
   Console.WriteLine(l); // prints the names of languages in sequence
}
// foreach loop
foreach (string l in languages){
   Console.WriteLine(l); // prints the names of languages in sequence
}
登入後複製

預設值

建立陣列時,C# 編譯器會將元素初始化為其預設值。例如,建立一個整數數組會將每個元素的值設為 0。

var numbers = new int[3];
foreach (int num in numbers){
   Console.WriteLine(num); // prints 000
}
登入後複製

當元素屬於值類型時,該類型的每個成員都會指派給其預設值。

Point[] a = new Point[4];
int x = a[2].X;
Console.WriteLine(x); // prints 0
public struct Point { public int X, Y; }
登入後複製

但是,對於引用類型,編譯器只是為每個專案建立空引用。

User[] u = new User[4];
int y = u[2].Y; // NullReference exception
public class User { public int X, Y; }
登入後複製

要避免該錯誤,您必須明確初始化每個項目,如下所示。

User[] users = new User[5];
for (int i = 0; i < users.Length; i++) // Iterate i from 0 to 999
users[i] = new User();
登入後複製

範例

 即時示範

using System;
class Program{
   static void Main(){
      string[] languages = new string[3]; // create a string array to hold 5 languages
      languages[0] = "csharp";
      languages[1] = "visual basic";
      languages[2] = "f#";
      string[] langugages_two = new string[] { "csharp", "visual basic", "f#" };
      var languages_three = new string[] { "csharp", "visual basic", "f#" };
      string language = languages[0];
      Console.WriteLine(language); // prints csharp
      int count = languages.Length; // 3
      Console.WriteLine(count);
      //string lang = languages[3]; // throws System.IndexOutOfRangeException
      // for loop
      for (int i = 0; i < languages.Length; i++){
         string l = languages[i];
         Console.WriteLine(l); // prints the names of languages in sequence
      }
      // foreach loop
      foreach (string l in languages){
         Console.WriteLine(l); // prints the names of languages in sequence
      }
      var numbers = new int[3];
      foreach (int num in numbers){
         Console.WriteLine(num); // prints 000
      }
      Point[] a = new Point[4];
      int x = a[2].X;
      Console.WriteLine(x); // prints 0
      User[] u = new User[4];
      //int y = u[2].Y; // NullReference exception
      User[] users = new User[5];
      for (int i = 0; i <users.Length; i++) // Iterate i from 0 to 999
      users[i] = new User();
   }
}
public struct Point { public int X, Y; }
public class User { public int X, Y; }
登入後複製

輸出

csharp
3
csharp
visual basic
f#
csharp
visual basic
f#
0
0
0
0
登入後複製

以上是數組在 C# 中如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!