今回はC#での配列の使い方をご紹介します。
C#はUnityや業務系システムのクライアント等でよく使用される言語で、どの現場でも活用する機会が多い言語です。
当然配列の使用方法が分かっていなければ、なかなかまともなプログラムを作る事はできません。特に業務の中では配列の使い方は知っていて当たり前の知識です。
今回はC#での配列の使い方についてしっかりと学んでおきましょう。
コンテンツ
C#での配列の使い方
C#の配列の宣言方法
C#で配列を扱う時は以下の様にまずは配列名を宣言します。
1 |
データ型名[] 配列名; |
ただ実際は以下の様にオブジェクトをまとめて生成するのが一般的です。
1 |
データ型名[] 配列名 = new データ型名[要素の数]; |
これだけでOKです。new演算子を使うと必要なメモリを確保してオブジェクトの生成まで行ってくれます。Java等を触った事があれば記述方法が非常に似ている事が分かると思います。
実際に配列に値を設定したり、初期化したりしてみましょう。
C#での配列への値の設定方法
配列に値を設定する場合は以下の様に記載します。
1 2 |
データ型名[] 配列名 = new データ型名[要素の数]; 配列名[インデックスの番号] = 設定値(初期値); |
実際にサンプルコードを見た方が分かり易いと思いますので、以下のコードを見てみて下さい。
以下は配列の宣言とオブジェクトの生成までは行ったものの初期化していない状態で、一度配列の中身を出力しています。その後、配列の各要素に値を設定した状態で再度中身を出力しています。
■C#コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; public class Test{ public static void Main(){ int[] int_array = new int[3]; Subfunc(int_array); //初期化していない状態 int_array[0] = 1; int_array[1] = 2; int_array[2] = 3; Subfunc(int_array); //値を設定した状態 } public static void Subfunc(int[] int_array){ Console.WriteLine("▼配列の要素出力▼"); for(int i = 0; i < int_array.Length; i++) { Console.WriteLine("要素は{0}",int_array[i]); } } } |
■実行結果
1 2 3 4 5 6 7 8 |
▼配列の要素出力▼ 要素は0 要素は0 要素は0 ▼配列の要素出力▼ 要素は1 要素は2 要素は3 |
初期化していない状態だと0が出力されています。
※必ず0が出力されるのかは不明(なので、0を設定したい場合も明示的に0を設定した方が良い)
配列の各要素に値を設定すると各要素が出力された事がよく分かると思います。
宣言と同時に初期化
他の多くの言語と同じ様に宣言と同じタイミングで初期化ができたら便利ですよね。
C#も当然宣言と同じタイミングで初期化が可能です!
■C#コード
1 2 3 4 5 6 7 8 9 10 11 |
using System; public class Test{ public static void Main(){ int[] int_array = new int[10] { 0,1,2,3,4,5,6,7,8,9 }; for(int i = 0; i < int_array.Length; i++) { Console.WriteLine("要素は{0}",int_array[i]); } } } |
■実行結果
1 2 3 4 5 6 7 8 9 10 |
要素は0 要素は1 要素は2 要素は3 要素は4 要素は5 要素は6 要素は7 要素は8 要素は9 |
値が正しく設定されている事が分かります。
配列の要素数を変更する(追加・削除)
C#で配列の要素数を変更する場合は、以下の様な構文で可能です!
Array.Resize(ref 配列名称, 変更後の要素数);
以下では追加する場合、削除する場合を行っていますので、Array.Resizeをどの様に使用しているか参考にしてみて下さい。
■C#コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; public class Test{ public static void Main(){ int[] int_array = new int[3]{1,2,3}; Subfunc(int_array); Array.Resize(ref int_array, int_array.Length + 2); int_array[3] = 4; int_array[4] = 5; Subfunc(int_array); Array.Resize(ref int_array, 2); Subfunc(int_array); } public static void Subfunc(int[] int_array){ Console.WriteLine("▼配列の要素出力▼"); for(int i = 0; i < int_array.Length; i++) { Console.WriteLine("要素は{0}",int_array[i]); } } } |
■実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
▼配列の要素出力▼ 要素は1 要素は2 要素は3 ▼配列の要素出力▼ 要素は1 要素は2 要素は3 要素は4 要素は5 ▼配列の要素出力▼ 要素は1 要素は2 |
■コードの説明
今回はこれまでより少々長いコードなので簡単な説明を行います。
まず、コードの後半でSubfuncというものが出現していますが、これは関数(メソッド)と呼ばれるもので、処理を一つにまとめたものになります。今回は配列の中身を全て出力するという処理を1つの関数にしています。※関数については別の記事で詳しく紹介しております。
そして、要素数の変更・要素への値設定があるたびにSubfuncを呼び出して要素の中身を出力しています。
要素数は以下の通りに変更されています。
- 元々の要素数は3
- 要素数を5つ(現在の要素数(3)+2している)にしている
- 要素数を2つにしている
多次元配列
多次元配列についても紹介をしておきます。
多くの現場では多次元配列を使う機会は多くは無いと思うのですが、全く使用しない訳ではありません。
多次元配列の場合の記述方法は以下のサンプルコードを見てもらうのが早いと思います。
■C#コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; public class Test{ public static void Main(){ int[,] int_array = new int[3,3]{ {1,2,3}, {4,5,6}, {7,8,9}, }; for (int i = 0; i < int_array.GetLength(0); i++) { for (int j = 0; j < int_array.GetLength(1); j++) { Console.WriteLine("配列[{0}, {1}]の値は{2}", i + 1, j + 1, int_array[i, j]); } } } } |
■実行結果
1 2 3 4 5 6 7 8 9 |
配列[1, 1]の値は1 配列[1, 2]の値は2 配列[1, 3]の値は3 配列[2, 1]の値は4 配列[2, 2]の値は5 配列[2, 3]の値は6 配列[3, 1]の値は7 配列[3, 2]の値は8 配列[3, 3]の値は9 |
※3次元も同じ要領で指定できるけどあんまり使わないです。
まとめ
という事で、今回はC#での配列の使用方法についてご紹介をしました。
配列を使いこなせる様になると、作れるプログラムの規模がどんどん拡大していきます。それに業務系システムの場合、大量のデータを順番に判定・編集するといった処理が多くのシステムの中で行われていますので、配列の基本は本当に重要です。
配列の使い方はどの言語でも基本的に同じなので、ここで考え方も含めてしっかりと押さえておきましょう。