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

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

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

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

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

Student クラスの実装については、「方法: 項目のリストを作成する」を参照してください。 このトピックからコードをコピーして、クラスのセットアップおよび Student オブジェクトのリストの作成に使用できます。

ビデオへのリンク このトピックのビデオ版については、「Video How to: Declare an Object by Using an Object Initializer (ビデオ デモ: オブジェクト初期化子を使用してオブジェクトを宣言する)」を参照してください。

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

  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 を省略することで簡略化できます。 この場合、コンパイラはローカル型の推論を使用して、student3 が Student のインスタンスであると判断します。

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

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

参照

処理手順

方法: 項目のリストを作成する

方法: 匿名型のインスタンスを宣言する (Visual Basic)

概念

ローカル型の推論 (Visual Basic)

オブジェクト初期化子: 名前付きの型と匿名型 (Visual Basic)

名前付きの型と匿名型の比較 (Visual Basic)