C#における配列の宣言と初期化方法について簡単に説明します。
// 方法1: 配列の宣言と初期化を別々に行う
int[] numbers; // 配列の宣言
numbers = new int[] { 1, 2, 3, 4, 5 }; // 配列の初期化
// 方法2: 配列の宣言と初期化を同時に行う
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
// 方法3: 簡略化した記法 (C# 3.0以降)
int[] numbers = { 1, 2, 3, 4, 5 };
配列を宣言と初期化をする方法について主な疑問や問題点を挙げてみます。
- 動的な配列サイズ: 配列のサイズが動的に変わる場合、どのように初期化すれば良いのか?
- 多次元配列の宣言と初期化方法: 多次元配列を宣言して初期化する方法や、その特性について理解したい。
- 初期値のデフォルト: 配列の初期化時、値が指定されていない場合のデフォルト値についての理解。
この記事ではこれらについても詳しく解説します。
配列の概要
配列の宣言と初期化方法
ここでは以下の3点の方法について解説します。
配列の宣言
int[] numbers; // 型[] 配列名;
構文の解説
配列の宣言と同時に初期化(要素数のみ指定)
配列を定義する際、型[]の形式で型を指定し、new 型[要素数]の形式で要素数を指定します。
要素数は配列のサイズを決定し、後で変更することができません。
各要素はデフォルトで 0 に初期化されます。
int[] numbers = new int[5]; // 型[] 配列名 = new 型[サイズ];
コードの解説
- 配列を
new int[5]
で作成すると、配列のすべての要素は自動的に初期化されます。整数型の配列の場合、すべての要素は0
に初期化されます。 - このコードでは、
numbers
という配列が5つの要素を持ち、それぞれの要素が0
で初期化されるということです。
配列の宣言と初期化 (要素を指定)
以下の宣言により、numbers という名前の整数型の配列が作成され、初期値として 1, 2, 3, 4, 5 がそれぞれの要素に設定されます。
配列のサイズは指定された初期値の数によって決まります。
この場合、配列 numbers は5つの要素を持ちます。
int[] numbers = new int[5] { 1, 2, 3, 4, 5 };
コードの解説
- このコードは、5つの整数要素を持つ配列を作成し、それぞれの要素に1から5までの値を設定しています。
new int[5]
で配列のサイズを指定し、初期化子リスト{ 1, 2, 3, 4, 5 }
で配列の各要素の値を設定しています。
配列の簡単な例
以下の例では、整数型の配列 numbers を宣言して、値 { 1, 2, 3, 4, 5 } で初期化しています。
その後、foreach ループを使用して配列の要素を順番に表示しています。
using System;
class Program
{
static void Main()
{
// 整数型の配列の宣言と初期化
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
// 配列の要素を表示
Console.WriteLine("配列の要素:");
foreach (int number in numbers)
{
Console.WriteLine(number);
}
}
}
実行結果
配列の要素:
1
2
3
4
5
動的な配列サイズ
配列(Array)は静的なデータ構造であり、初期化時に指定したサイズ以上の要素数を持つことはできません。
配列のサイズは宣言時に固定され、後から動的にサイズを変更することはできません。
そのため、動的に要素の追加や削除を行いたい場合は、リスト(List)などの動的なデータ構造を使用することが推奨されます。
動的な配列の管理
もし動的なサイズの配列が必要な場合は、Array.Resize
メソッドを使用して配列のサイズを変更する方法がありますが、これは新しい配列を作成して元の要素をコピーする操作が行われるため、性能面での影響があります。
int[] dynamicArray = new int[3] { 1, 2, 3 };
// 配列のサイズを動的に変更する例
Array.Resize(ref dynamicArray, 5); // 新しいサイズを指定
// 新しい要素を設定する場合
dynamicArray[3] = 4;
dynamicArray[4] = 5;
ただし、これは効率的な方法ではなく、通常はリストを使う方が推奨されます。
多次元配列の宣言と初期化方法
C#における多次元配列の宣言と初期化について簡単に説明します。
2次元配列の例
以下の例では、int[,]
を使って2次元配列を宣言し、new int[2, 3]
で2行3列の配列を作成しています。
各要素は初期化子 {}
を使用して初期化されています。
// 2行3列の整数型の2次元配列を宣言して初期化する例
int[,] matrix = new int[2, 3] {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
3次元配列の例
3次元配列の場合、int[,,]
を使って宣言し、new int[2, 2, 2]
で2 × 2 × 2 の配列を作成しています。
初期化子を使って各要素を初期化しています。
// 2 × 2 × 2 の3次元配列を宣言して初期化する例
int[,,] cube = new int[2, 2, 2] {
{
{ 1, 2 },
{ 3, 4 }
},
{
{ 5, 6 },
{ 7, 8 }
}
};
初期値のデフォルト
C#における配列の初期化時のデフォルト値は、要素の型に応じて決まります。
以下に主なデータ型ごとの初期化時のデフォルト値を示します。
- 数値型 (int, float, double など): 0
- bool型: false
- char型: '\0' (ヌル文字)
- 参照型 (string, クラス): null
例えば、以下のように初期化した場合、デフォルト値が適用されます。
using System;
class Program
{
static void Main()
{
// int型の配列を初期化して出力
int[] numbers = new int[5];
Console.WriteLine("int型配列の初期化時のデフォルト値:");
foreach (int number in numbers)
{
Console.WriteLine(number); // 数値型のデフォルト値は0
}
// bool型の配列を初期化して出力
bool[] flags = new bool[3];
Console.WriteLine("\nbool型配列の初期化時のデフォルト値:");
foreach (bool flag in flags)
{
Console.WriteLine(flag); // bool型のデフォルト値はfalse
}
// string型の配列を初期化して出力
string[] names = new string[2];
Console.WriteLine("\nstring型配列の初期化時のデフォルト値:");
foreach (string name in names)
{
Console.WriteLine(name); // 参照型のデフォルト値はnull
}
}
}
実行結果
int型配列の初期化時のデフォルト値:
0
0
0
0
0
bool型配列の初期化時のデフォルト値:
False
False
False
string型配列の初期化時のデフォルト値: