1. C#の配列とは
C#における配列とは、同じ型の複数の値を一つの変数に格納するためのデータ構造です。
例えば、あなたが10個の整数を管理したいとします。それぞれの整数に異なる変数を割り当てる代わりに、1つの新しい配列を作成し、その中にすべての整数を格納することができます。
配列の重要性
確かに、数値が少ない場合は個々の変数で管理するのも一つの手ですが、数が多くなるとその管理が大変になります。
また、配列を使うとループ処理を効率的に行うことができます。これが配列が重要な理由の一つです。
KindleUnlimited会員であれば、全ての本をご覧頂けます。 Linqを理解すれば、C#プログラミングの世界が変わる 第1版
2. 配列の宣言と初期化
C#で配列を使うには、まずその配列を宣言し、次に初期化する必要があります。
宣言は、配列がどの型のデータを保持するかを指定します。初期化は、配列に具体的な値を割り当てるプロセスです。
ソースコード例
1 2 3 4 5 6 7 8 9 |
using System; class Program { static void Main() { int[] myArray = new int[5]; } } |
上記のコードは、5つの整数を保持できる配列を宣言し、初期化しています。
これにより、myArray[0]、myArray[1]、myArray[2]、myArray[3]、myArray[4]の5つの整数を管理することが可能になります。
配列のインデックスについて
多くのプログラミング言語では配列のインデックスは0から始まります。
つまり、配列の最初の要素はインデックス0でアクセスされ、次の要素はインデックス1、というように進みます。
これは初めて見ると少し直感に反するかもしれませんが、慣れると非常に自然に感じられるようになります。
3. 配列への値の代入と取り出し
配列に値を代入したり、配列から値を取り出したりするには、インデックスを使用します。
配列名の後に角括弧([])をつけ、その中にインデックスの値を書きます。
ソースコード例
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; class Program { static void Main() { int[] myArray = new int[5]; // 値の代入 myArray[0] = 10; myArray[1] = 20; myArray[2] = 30; myArray[3] = 40; myArray[4] = 50; // 値の取り出し Console.WriteLine(myArray[0]); Console.WriteLine(myArray[1]); Console.WriteLine(myArray[2]); Console.WriteLine(myArray[3]); Console.WriteLine(myArray[4]); } } |
出力結果 10 20 30 40 50
このコードでは、まず5つの要素を持つ整数型の配列myArrayを宣言し、初期化しています。
そして、各インデックスに対して値を代入しています。
最後に、各インデックスの値をConsole.WriteLineを使って出力しています。
4. 配列とループ処理
配列の真価が発揮されるのは、ループ処理を行うときです。
for文やforeach文を用いて、配列のすべての要素に簡単にアクセスできます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; class Program { static void Main() { int[] myArray = new int[5]{10, 20, 30, 40, 50}; // for文によるループ処理 for (int i = 0; i < myArray.Length; i++) { Console.WriteLine(myArray[i]); } } } |
出力結果 10 20 30 40 50
ここではfor文を用いて配列の全ての要素に順にアクセスし、その値を出力しています。
ここで使用されているmyArray.Lengthは配列の長さ(要素数)を返すプロパティで、これにより配列の要素すべてに対する処理を容易に行うことができます。
5. 多次元配列
C#では、1次元だけでなく多次元の配列も作成することができます。
これを利用すると、表形式のデータや、3次元空間のデータなど、より高次元の情報を効率よく扱うことが可能となります。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; class Program { static void Main() { int[,] myArray = new int[2,3]{{1, 2, 3}, {4, 5, 6}}; // 多次元配列の要素の表示 for (int i = 0; i < myArray.GetLength(0); i++) { for (int j = 0; j < myArray.GetLength(1); j++) { Console.Write(myArray[i, j] + " "); } Console.WriteLine(); } } } |
出力結果 1 2 3 4 5 6
上の例では、2行3列の二次元配列を作成しています。
各要素には対応する値が格納され、それらは2つのforループを使用してアクセスし、出力しています。
6. 配列のメソッドとプロパティ
配列は、データを格納するだけでなく、そのデータに対する様々な操作を可能にするメソッドやプロパティを提供しています。
いくつかの重要なものを見ていきましょう。
配列の主要なメソッドとプロパティ
- Length:配列全体の要素数を返します。
- GetLength(int dimension):指定した次元の要素数を返します。
- Sort():配列の要素をソートします。
- Reverse():配列の要素の順序を反転します。
7. 配列と参照
配列は参照型であるため、メソッドに配列を渡すと、そのメソッド内で配列の要素が変更されると、それが呼び出し元にも影響します。
つまり、メソッド内で配列を変更すると、元の配列も変更されます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; class Program { static void Main() { int[] myArray = new int[3]{1, 2, 3}; Console.WriteLine("Before: " + myArray[0]); ChangeArray(myArray); Console.WriteLine("After: " + myArray[0]); } static void ChangeArray(int[] array) { array[0] = 100; } } |
出力結果 Before: 1 After: 100
上のコードでは、配列myArrayをChangeArrayメソッドに渡しています。
このメソッド内で配列の最初の要素を変更すると、メソッドを呼び出した後の元の配列も変更されています。
8. 配列を使った一般的なパターン
配列はデータ構造の基本であり、様々なシナリオで使用されます。
ここでは、配列を使用してデータを処理する一般的なパターンをいくつか紹介します。
step
1データの集計
配列の要素をループして集計を行うパターンは非常に一般的です。
これには、合計値を計算したり、最大値や最小値を見つけたりするなどが含まれます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; class Program { static void Main() { int[] myArray = new int[5]{1, 2, 3, 4, 5}; int sum = 0; for(int i = 0; i < myArray.Length; i++) { sum += myArray[i]; } Console.WriteLine("The sum is: " + sum); } } |
出力結果 The sum is: 15
step
2データの変換
配列のすべての要素に何らかの変換を適用するパターンもよく見られます。
これには、数値を二乗したり、文字列を大文字に変換したりするなどがあります。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; class Program { static void Main() { int[] myArray = new int[5]{1, 2, 3, 4, 5}; for(int i = 0; i < myArray.Length; i++) { myArray[i] *= 2; } foreach(var item in myArray) { Console.WriteLine(item); } } } |
出力結果 2 4 6 8 10
step
3データのフィルタリング
特定の条件を満たす要素だけを抽出するパターンも一般的です。
たとえば、ある範囲の数値を含む要素だけを選択するなどが可能です。
このWhereメソッドはLinqメソッドです。C#には、配列の要素などを簡単に修正できるLinqメソッドを使用することができます。
Whereメソッドは条件にあった、要素のみ取り出すことが可能です。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; using System.Linq; class Program { static void Main() { int[] myArray = new int[5]{1, 2, 3, 4, 5}; var filteredArray = myArray.Where(x => x > 3); foreach(var item in filteredArray) { Console.WriteLine(item); } } } |
出力結果 4 5
9. 配列と他のコレクション
C#には配列以外にも様々なコレクションが存在します。
これにはList、Queue、Stack、Dictionaryなどが含まれます。
これらはそれぞれ独自の特性と利点を持ち、様々なシナリオで使用されます。
しかし、配列は最も基本的なデータ構造であり、他の多くのコレクションの基礎となる概念です。
したがって、配列の理解は、C#や他のプログラミング言語でより高度なデータ構造を理解するための重要なステップです。
まとめ
本記事では、C#の配列の使い方を初心者向けに解説しました。
配列の基本的な定義の仕方、要素へのアクセス方法、配列の長さの取得方法、配列の初期化の方法、配列を使用した一般的なパターンを学びました。
配列はプログラミングの基本的なデータ構造であり、多くの場面で使用されます。
この記事を通じて、配列の基本的な使い方を理解し、C#プログラミングのスキルを一歩進めることができたら幸いです。
最後まで読んで頂き、ありがとうございました。少しでもお役に立てたなら幸いです!