方法: オブジェクト初期化子を使用してオブジェクトを宣言する (Visual Basic)

オブジェクト初期化子を使用すると、1 つのステートメントで、クラスのインスタンスを宣言してインスタンス化できます。 また、パラメーター化されたコンストラクターを呼び出さずに、インスタンスの 1 つ以上のメンバーを同時に初期化できます。

オブジェクト初期化子を使用して、名前付きの型のインスタンスを作成すると、クラスのパラメーターなしのコンストラクターが呼び出され、続いて指定した順番で、指定したメンバーの初期化が行われます。

次の手順は、3 つの異なる方法で Student クラスのインスタンスを作成する方法を示しています。 クラスには特に姓、名、および学年のプロパティがあります。 3 つの各宣言では、プロパティ First を "Michael" に設定し、プロパティ Last を "Tucker" に設定し、その他のすべてのメンバーをそれらの既定値に設定して、Student の新しいインスタンスを作成しています。 プロシージャ内の各宣言の結果は、オブジェクト初期化子を使用しない次の例と同じです。

Dim student0 As New Student
With student0
    .First = "Michael"
    .Last = "Tucker"
End With

Student クラスの実装については、「方法:項目のリストを作成する」を参照してください。 そのトピックからコードをコピーして、クラスを設定し、操作する Student オブジェクトの一覧を作成できます。

オブジェクト初期化子を使用して、名前付きクラスのオブジェクトを作成するには

  1. コンストラクターを使用することを計画した場合と同様に、宣言を開始します。

    Dim student1 As New Student

  2. キーワード With の後に中かっこで囲んだ初期化リストを含めて入力します。

    Dim student1 As New Student With { <initialization list> }

  3. 初期化リストに、初期化して、それに初期値を代入する各プロパティを含めます。 プロパティの名前の前にピリオドを付けます。

    Dim student1 As New Student With {.First = "Michael", 
                                      .Last = "Tucker"}
    

    クラスの 1 つ以上のメンバーを初期化できます。

  4. または、クラスの新しいインスタンスを宣言してから、それに値を代入することもできます。 まず、Student のインスタンスを宣言します。

    Dim student2 As Student

  5. 通常の方法で Student のインスタンスの作成を開始します。

    Dim student2 As Student = New Student

  6. With に続けてオブジェクト初期化子を入力して、新しいインスタンスの 1 つ以上のメンバーを初期化します。

    Dim student2 As Student = New Student With {.First = "Michael", 
                                                .Last = "Tucker"}
    
  7. As Student を省略すると、前のステップの定義を簡略化できます。 これを行うと、コンパイラによって、ローカル型推論を使用して、student3Student のインスタンスであると判断されます。

    Dim student3 = New Student With {.First = "Michael", 
                                     .Last = "Tucker"}
    

    詳細については、「ローカル型の推論」を参照してください。

関連項目