C# の配列
配列の概要
配列は、同じ型の複数の変数を含むデータ構造です。配列は型を使用して宣言されます:
配列には次のプロパティがあります:
配列は 1 次元、多次元、またはインターリーブにすることができます。
数値配列要素のデフォルト値はゼロに設定され、参照要素のデフォルト値は null に設定されます。
ジャグ配列は配列の配列であるため、その要素は参照型であり、null に初期化されます。
配列には 0 からインデックスが付けられます。n 個の要素を持つ配列には 0 から n-1 までのインデックスが付けられます。
配列要素は、配列型を含む任意の型にすることができます。
配列型は、抽象基本型 Array から派生した参照型です。この型は IEnumerable と IEnumerable を実装しているため、C# のすべての配列で foreach 反復を使用できます。
C# 配列のインデックスは 0 から始まります。つまり、配列のインデックスは 0 から始まります。 C# では配列は、他のほとんどの一般的な言語での動作と同様に動作します。ただし、注意すべき違いがいくつかあります。
配列を宣言するときは、識別子ではなく型の後に角かっこ ([]) を付ける必要があります。 C# では、識別子の後に角括弧を置くことは不正な構文です。
int[] table; // not int table[];
もう 1 つの詳細は、配列のサイズはその型の一部ではないということです。配列を宣言し、配列の長さに関係なく、それに int オブジェクトの任意の配列を割り当てることができます。
int[] numbers; // declare numbers as an int array of any size numbers = new int[10]; // numbers is a 10-element array numbers = new int[20]; // now it's a 20-element array
配列の宣言
C# は、1 次元配列、多次元配列 (長方形配列)、および配列の配列 (インターリーブ配列) をサポートしています。次の例は、さまざまな種類の配列を宣言する方法を示しています。
1 次元配列:
int[] numbers;
多次元配列:
string[,] names;
配列の配列 (インターリーブ):
byte[][] scores;
配列の宣言 (上記) では、実際には配列が作成されません。 。
C# では、配列はオブジェクトであり、インスタンス化する必要があります。次の例は、配列の作成方法を示しています。
1 次元配列:
int[] numbers = new int[5];
多次元配列:
string[,] names = new string[5,4];
配列の配列 (インターリーブ):
byte[][] scores = new byte[5][]; for (int x = 0; x < scores.Length; x++) { scores[x] = new byte[4]; }
より大きな配列も可能です。たとえば、3 次元の長方形配列を作成できます:
int[,,] buttons = new int[4,5,3];
長方形配列とギザギザ配列を混合することもできます。たとえば、次のコードは、int 型の 2 次元配列の 1 次元配列と、型の 3 次元配列を宣言します。
int[][,,][,] numbers;
配列の初期化
初期値を中括弧 ({}) で囲むことにより、宣言時に配列を初期化するシンプルで簡単な方法を提供します。次の例は、さまざまな型の配列を初期化するさまざまな方法を示しています。
注: 宣言時に配列が初期化されていない場合、配列メンバーは配列型のデフォルトの初期値に自動的に初期化されます。さらに、配列が型のフィールドとして宣言されている場合、その型がインスタンス化されるときに、配列はデフォルト値の null に設定されます。
1次元配列
int[] numbers = 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[] numbers = {1, 2, 3, 4, 5}; string[] names = {"Matt", "Joanne", "Robert"};
多次元配列
int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} }; string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} };
省略可能以下に示すように、配列のサイズ:
int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} }; string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} };
初期化子が提供されている場合、以下に示すように new 演算子も省略できます:
int[,] numbers = { {1, 2}, {3, 4}, {5, 6} }; string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} };
ギザギザの配列 (配列の配列)
は次のように使用できます。例 次のようにギザギザ配列を初期化します:
int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
次のように最初の配列のサイズを省略できます:
int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
- または -
int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
ギザギザ配列の要素には初期化構文がないことに注意してください。
配列メンバーへのアクセス
たとえば、次のコードは、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} }; numbers[1, 1] = 5;
以下は、2 つの要素を含む 1 次元のインターリーブ配列を宣言します。最初の要素は 2 つの整数の配列で、2 番目の要素は 3 つの整数の配列です。
int[][] numbers = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5}};
次のステートメントは、最初の配列の最初の要素に 58 を割り当て、2 番目の配列の 2 番目の要素に 58 を割り当てます。 667:
numbers[0][0] = 58; numbers[1][1] = 667;
配列はオブジェクトです C# では、配列は実際にはオブジェクトです。 System.Array は、すべての配列型の抽象基本型です。 System.Array のプロパティだけでなく、他のクラス メンバーも使用できます。この使用例としては、Length プロパティを使用して配列の長さを取得することが挙げられます。次のコードは、数値配列の長さ (5) を LengthOfNumbers という変数に割り当てます。
int[] numbers = {1, 2, 3, 4, 5}; int LengthOfNumbers = numbers.Length;
System.Array クラスには、配列の並べ替え、検索、コピーのメソッドなど、その他の便利なメソッド/プロパティが多数用意されています。
配列で foreach を使用する
C# には foreach ステートメントも用意されています。このステートメントは、配列の要素を反復処理するための単純かつ明確な方法を提供します。
たとえば、次のコードはnumbersという名前の配列を作成し、foreachステートメントを使用して配列を反復処理します:
int[] numbers = {4, 5, 6, 1, 2, 3, -2, -1, 0}; foreach (int i in numbers) { System.Console.WriteLine(i); }
多次元配列のおかげで、同じメソッドを使用して要素を反復処理できます。例:
int[,] numbers = new int[3, 2] {{9, 99}, {3, 33}, {5, 55}}; foreach(int i in numbers) { Console.Write("{0} ", i); }
出力この例の例は次のとおりです:
9 99 3 33 5 55
ただし、多次元配列のおかげで、ネストされた for ループを使用すると、配列要素をより適切に制御できるようになります。
C# の配列に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Char Arrayは文字シーケンスをC言語で保存し、char array_name [size]として宣言されます。アクセス要素はサブスクリプト演算子に渡され、要素は文字列のエンドポイントを表すnullターミネーター「\ 0」で終了します。 C言語は、strlen()、strcpy()、strcat()、strcmp()など、さまざまな文字列操作関数を提供します。

C言語では、以下などのエスケープシーケンスを通じて特殊文字が処理されます。\ nはラインブレークを表します。 \ tはタブ文字を意味します。 ESACEシーケンスまたは文字定数を使用して、Char C = '\ n'などの特殊文字を表します。バックスラッシュは2回逃げる必要があることに注意してください。さまざまなプラットフォームとコンパイラが異なるエスケープシーケンスを持っている場合があります。ドキュメントを参照してください。

c言語のシンボルの使用方法は、算術、割り当て、条件、ロジック、ビット演算子などをカバーします。算術演算子は基本的な数学的操作に使用されます。割り当てと追加、下位、乗算、除算の割り当てには、条件操作に使用されます。ポインター、ファイル終了マーカー、および非数値値。

Cでは、文字列でCharタイプが使用されます。1。単一の文字を保存します。 2。配列を使用して文字列を表し、ヌルターミネーターで終了します。 3。文字列操作関数を介して動作します。 4.キーボードから文字列を読み取りまたは出力します。

C言語では、charタイプの変換は、キャスト:キャスト文字を使用することにより、別のタイプに直接変換できます。自動タイプ変換:あるタイプのデータが別のタイプの値に対応できる場合、コンパイラは自動的に変換します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

Cスイッチステートメントでデフォルトに起因するエラーを回避するための戦略:定数の代わりに列挙を使用し、ケースステートメントの値を列挙の有効なメンバーに制限します。最後のケースステートメントでフォールスルーを使用して、プログラムが以下のコードを引き続き実行できるようにします。フォールスルーなしのスイッチステートメントの場合、エラー処理のためのデフォルトステートメントを常に追加するか、デフォルトの動作を提供します。
