■C#の配列
配列は、同一のデータ型の集合で、添え字を使って個別の要素を制御できます。
※C#の配列は、Zero-based Arrayです。(要素の添え字が「0」から始まる)
配列の例を見てみましょう。
// 一次元配列
string[] Arr01 = new string[100];
string[] Arr02 = { “りんご”, “みかん”, “バナナ” };
// 二次元配列
string[,] Arr11 = {{“営業部”, “営業太郎”},{“経理部”, “経理太郎”}};
// 三次元配列
string[,,] Arr21;
■C#の可変配列
多次元配列の各次元ごとに要素のサイズが同じRectangular配列は、[ , ]のようにカンマで分けて多次元を表します。だが、各次元ごとのサイズが異なる可変配列(Jagged Array)の場合は、[][]のように各次元ごとに分けます。
// 可変配列(Jagged Array)
// 一次元の大きさはコンパイル時に確定されないといけない
int[][] Arr = new int[3][];
// 各要素内に大きさの異なる配列を入れることも可能
Arr[0] = new int[2];
Arr[1] = new int[3] { 1, 2, 3 };
Arr[2] = new int[4] { 1, 2, 3, 4 };
Arr[0][0] = 1;
Arr[0][1] = 2;
■C#の配列を使ってみよ
C#の配列は、内部的に.NET Frameworkの System.Arrayから派生されたものです。なので、System.Arrayのメッソドやプロパティを使うことができます。
下記の例でnames配列のサイズを取得するためにLengthを使ってますが、これはSystem.Arrayクラスに定義されている属性です。
static void Main(string[] args)
{
int cnt = 0;
string[] names = { “A”, “B”, “C”, “D”, “E” };
for (int i = 0; i < names.Length; i++) { cnt += names[i]; } Console.WriteLine(cnt); }
■C#の配列を受け渡し
配列の受け渡しは、渡す側では配列の名を使い、受ける側では同じ型の配列で受けます。
C#の配列はReference型のため、配列を別のオブジェクトや関数に渡す場合は、配列のデータを複写するのではなく、配列全体を示す参照値(Reference pointer)のみ渡します。
static void Main(string[] args)
{
string[] names = { “A”, “B”, “C”, “D”, “E” };
int cnt = CalculateSum(names); // 配列を渡す側
Console.WriteLine(cnt);
}
static int CalculateSum(string[] namesArray) // 配列を受ける側
{
int cnt = 0;
for (int i = 0; i < namesArray.Length; i++) { cnt += namesArray[i]; } return cnt; }