C# 配列の学習

高洛峰
リリース: 2016-12-16 14:15:32
オリジナル
1117 人が閲覧しました

配列の概要

C# 配列のインデックスは 0 から付けられます。つまり、配列のインデックスは 0 から始まります。 C# では配列は、他のほとんどの一般的な言語での動作と同様に動作します。ただし、注意すべき違いがいくつかあります。

配列を宣言するときは、識別子ではなく型の後に角かっこ ([]) を付ける必要があります。 C# では、識別子の後に角かっこを置くことは不正な構文です。

int[] table; // not int table[];

もう 1 つの詳細は、配列のサイズは型の一部ではありませんが、C 言語では配列の型の一部です。これにより、配列の長さに関係なく、配列を宣言し、それに int オブジェクトの任意の配列を割り当てることができます。

int[]numbers; //数値を任意のサイズの int 配列として宣言します

numbers = new int[10] //数値は 10 要素の配列です

numbers = new int[20]; 20 要素の配列です

配列の宣言

C# は、1 次元配列、多次元配列 (長方形配列)、および配列の配列 (インターリーブ配列) をサポートしています。次の例は、さまざまな型の配列を宣言する方法を示しています。

1 次元配列:

int[] 数値;

多次元配列:

string[,] 名前; ):

byte[][] スコア;

配列 (上に示したもの) を宣言しても、実際には配列は作成されません。 C# では、配列はオブジェクト (このチュートリアルで後ほど説明します) であり、インスタンス化する必要があります。次の例は、配列の作成方法を示しています。

1 次元配列:

int[]numbers = new int[5];

多次元配列:

string[,] names = new string[5] ,4];

配列の配列 (インターリーブ):

byte[][] スコア = 新しいバイト[5][];

for (int x = 0; x {

scores[x ] = new byte[4];
}


さらに大きな配列を使用することもできます。たとえば、3 次元の長方形配列を作成できます:

int[,,] button = new int[4,5,3];

長方形配列とギザギザ配列を混合することもできます。たとえば、次のコードは、int 型の 2 次元配列の 1 次元配列と、型の 3 次元配列を宣言します。

int[][,,][,]数値;

配列の初期化


C# では、初期値を中括弧 ({}) で囲むことにより、宣言時に配列を初期化するシンプルで簡単な方法を提供します。次の例は、さまざまな型の配列を初期化するさまざまな方法を示しています。

注: 宣言時に配列が初期化されていない場合、配列メンバーは配列型のデフォルトの初期値に自動的に初期化されます。さらに、配列が型のフィールドとして宣言されている場合、その型がインスタンス化されるときに、配列はデフォルト値の null に設定されます。

1 次元配列

int[] 数値 = new int[5] {1, 2, 3, 4, 5};

string[] names = new string[3] {"Matt", "Joanne", " Robert"};


配列のサイズは次のように省略できます:

int[]numbers = new int[] {1, 2, 3, 4, 5};

string[] names = new string[] {"Matt", "Joanne", "Robert"};


初期化子が提供されている場合は、次のように new 演算子を省略することもできます:

int[]数値 = {1, 2, 3 , 4, 5};

string[] names = {"Matt", "Joanne", "Robert"};


多次元配列

int[,]数値 = new int[3, 2] { {1 , 2}, {3, 4}, {5, 6} };

string[,] 兄弟 = 新しい string[2, 2] { {"マイク","エイミー"}, {"メアリー","アルバート" } };


配列のサイズは次のように省略できます:

int[,]数値 = new int[,] { {1, 2}, {3, 4}, {5, 6} };

string[,]兄弟 = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} };


初期化子が指定されている演算子がある場合は、new を省略することもできます。以下に示す:

int[,] 数値 = { {1, 2}, {3, 4}, {5, 6} };

string[,] 兄弟 = { {"マイク", "エイミー "}, { "Mary", "Albert"} };


ギザギザ配列 (配列の配列)

次の例に示すようにギザギザ配列を初期化できます:

int[][]数値 = new int [2][ ] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

以下に示すように、最初の配列のサイズは省略できます。 int[][] 数値 = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

- または -

int[][]数値 = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

インターリーブ配列の場合、要素は初期化構文はありません。

配列メンバーへのアクセス

配列メンバーへのアクセスは、C/C++ での配列メンバーへのアクセスと同様に、直接行うことができます。たとえば、次のコードは、numbers という名前の配列を作成し、配列の 5 番目の要素に 5 を割り当てます:

int[]numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1 , 0};

numbers[4] = 5;

次のコードは、多次元配列を宣言し、[1, 1] にあるメンバーに 5 を割り当てます。


int[,]numbers = { { 1, 2} 、{3, 4}、{5, 6}、{7, 8}、{9, 10} };
数値[1, 1] = 5;

以下は、2 つの要素を含む 1 次元のギザギザ配列を宣言します。最初の要素は 2 つの整数の配列で、2 番目の要素は 3 つの整数の配列です:

int[][]数値 = new int[][] { new int[] {1, 2}, new int [ ] {3, 4, 5}
};

次のステートメントは、最初の配列の最初の要素に 58 を割り当て、2 番目の配列の 2 番目の要素に 667 を割り当てます。

numbers[1][1] = 667;

配列はオブジェクトです


C# では、配列は実際にはオブジェクトです。 System.Array は、すべての配列型の抽象基本型です。 System.Array のプロパティだけでなく、他のクラス メンバーも使用できます。この使用例としては、Length プロパティを使用して配列の長さを取得することが挙げられます。次のコードは、数値配列の長さ (5) を LengthOfNumbers という名前の変数に割り当てます。

System.Array クラスは、配列の並べ替え、検索、コピーのためのメソッドなど、多くの便利な追加メソッド/プロパティを提供します。

配列で foreach を使用する


C# には foreach ステートメントも用意されています。このステートメントは、配列の要素を反復処理するための単純かつ明確な方法を提供します。たとえば、次のコードは、numbers という名前の配列を作成し、foreach ステートメントを使用して配列を反復処理します。
foreach (int i in数値)

{

System.Console.WriteLine(i);

}

多次元配列のため、同じメソッドを使用して要素を反復処理できます。例:

int[ ,] 数値 = 数値 new int[3, 2] {{9, 99}, {3, 33}, {5, 55}};
foreach(int i in数値)
{
Console.Write("{0 } ", i) ;
}

この例の出力は次のとおりです:

9 99 3 33 5 55


ただし、多次元配列のおかげで、ネストされた for ループを使用すると、配列要素をより適切に制御できます。

C# 配列学習に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート