C#

C# | 配列の宣言と初期化をする方法

2024年5月2日

本ページはプロモーションが含まれています

C#配列の宣言アイキャッチ画像

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 };

配列を宣言と初期化をする方法について主な疑問や問題点を挙げてみます。

  1. 動的な配列サイズ: 配列のサイズが動的に変わる場合、どのように初期化すれば良いのか?
  2. 多次元配列の宣言と初期化方法: 多次元配列を宣言して初期化する方法や、その特性について理解したい。
  3. 初期値のデフォルト: 配列の初期化時、値が指定されていない場合のデフォルト値についての理解。

この記事ではこれらについても詳しく解説します。

配列の概要

ポイント

配列は、同じ型の複数の要素を一つのまとまりとして扱うためのデータ構造です。

C#では、配列を定義する際に特定の型の要素を格納するためのメモリ領域が連続して確保されます。

配列は、要素に数値のインデックスを使用してアクセスでき、データの整合性が保たれます。

また、要素の追加や削除が制限される一方で、要素への高速なアクセスが可能です。

配列の宣言と初期化方法

ここでは以下の3点の方法について解説します。

  • 配列の宣言
  • 配列の宣言と同時に初期化
  • 配列の宣言と初期化 (要素を指定)

配列の宣言

int[] numbers; // 型[] 配列名;

構文の解説

  1. 型の指定
    • int は配列の要素が整数型(int)であることを示します。
  2. 角括弧 []
    • 角括弧は、変数 numbers が配列であることを示します。この場合、int型の配列であることを示しています。
  3. 変数名
    • 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#における配列の初期化時のデフォルト値は、要素の型に応じて決まります。

以下に主なデータ型ごとの初期化時のデフォルト値を示します。

  1. 数値型 (int, float, double など): 0
  2. bool型: false
  3. char型: '\0' (ヌル文字)
  4. 参照型 (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型配列の初期化時のデフォルト値:

まとめ

  • 動的な配列サイズの初期化は基本的にはできない。
  • List<T> を使用することで、動的にサイズを調整できる。
  • 多次元配列の要素へのアクセスは添え字を使用して行う。
  • 初期値のデフォルトは数値型は0、bool型はfalse、char型はヌル文字、参照型はnull。

Follow me!

-C#
-,

PAGE TOP