ホームページ  >  記事  >  バックエンド開発  >  C# では配列はどのように機能するのでしょうか?

C# では配列はどのように機能するのでしょうか?

WBOY
WBOY転載
2023-09-10 09:41:081252ブラウズ

数组在 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#";

ただし、上記の 2 つのステップを 1 つのステップに結合した別の簡潔な構文があります。

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; }

ただし、参照型の場合、コンパイラは項目ごとに null 参照を作成するだけです。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。