C# 配列の初期化と初期値の代入
C#では、配列の初期化と初期値の代入にはさまざまな方法があります。それぞれのパターンを以下にまとめます。
目次
1. 配列宣言と初期化を分ける
int[] numbers;
numbers = new int[5];
- 配列のサイズを指定して初期化します。
- 配列の各要素は型に応じたデフォルト値で初期化されます。
int
なら0
、string
ならnull
。
2. 宣言時にサイズと初期値を指定
int[] numbers = new int[5] { 1, 2, 3, 4, 5 };
- サイズと初期値を同時に指定します。
- 初期化子の数と配列サイズが一致している必要があります。
3. サイズ省略と初期値設定
int[] numbers = { 1, 2, 3, 4, 5 };
- 配列サイズを明示的に指定せずに初期化します。
- 初期化子からサイズが自動的に推測されます。
4. 多次元配列の初期化
サイズのみ指定する場合
int[,] matrix = new int[2, 3];
- 2行3列の多次元配列が作成されます。
サイズと初期値を同時に指定
int[,] matrix = new int[2, 3]
{
{ 1, 2, 3 },
{ 4, 5, 6 }
};
サイズ省略と初期値設定
int[,] matrix =
{
{ 1, 2, 3 },
{ 4, 5, 6 }
};
5. ジャグ配列(配列の配列)の初期化
サイズのみ指定
int[][] jaggedArray = new int[3][];
- 各要素は
null
で初期化されます。
サイズと初期値を指定
int[][] jaggedArray = new int[3][]
{
new int[] { 1, 2 },
new int[] { 3, 4, 5 },
new int[] { 6 }
};
サイズ省略と初期値設定
int[][] jaggedArray =
{
new int[] { 1, 2 },
new int[] { 3, 4, 5 },
new int[] { 6 }
};
6. Array
クラスを使用した初期化
Array numbers = Array.CreateInstance(typeof(int), 5);
numbers.SetValue(1, 0); // インデックス0に1を設定
numbers.SetValue(2, 1); // インデックス1に2を設定
- 型やサイズを動的に指定したい場合に便利です。
7. 初期値を一括で同じ値に設定
LINQを使用
int[] numbers = Enumerable.Repeat(5, 10).ToArray();
// すべての要素が5の長さ10の配列
ループを使用
int[] numbers = new int[10];
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = 5;
}
8. 配列初期化の注意点
- サイズを指定した後に初期化子(
{}
)を使うことはできません。
// 以下はエラーになります
int[] numbers = new int[5] { 1, 2, 3 };
配列サイズと初期化子の要素数が一致していない場合にエラーになります。
まとめ
配列の初期化にはさまざまな方法があります。それぞれの方法を理解し、適切な場面で使い分けることで、効率的なコードを書くことができます。
ディスカッション
コメント一覧
まだ、コメントがありません