VB.NET 構造体を初期化する方法

構造体の初期化について説明します。

Dimを使う方法

Structure hito
    Dim age As Integer   '年齢
    Dim blood As String  '血液型
End Structure

Module Module1
    Sub Main()
        Dim suzuki As hito
        Console.WriteLine("suzuki.age={0} suzuki.blood={1}",
                           suzuki.age, suzuki.blood)
    End Sub
End Module
suzuki.age=0 suzuki.blood=

Dimを使って構造体の宣言をすると、構造体のフィールドは0で初期化されます。
参照型であるString型はNothingで初期化されます。

Newを使う方法

Structure hito
    Dim age As Integer   '年齢
    Dim blood As String  '血液型
End Structure

Module Module1
    Sub Main()
        Dim suzuki As New hito
        Console.WriteLine("suzuki.age={0} suzuki.blood={1}",
                           suzuki.age, suzuki.blood)
    End Sub
End Module
suzuki.age=0 suzuki.blood=

Newを使って構造体を初期化しても、Dimを使った時と同じです。

スポンサーリンク

コンストラクタを使う方法

Structure hito
    Dim age As Integer   '年齢
    Dim blood As String  '血液型

    Sub New(ByVal a As Integer, ByVal b As String)
        Me.age = a
        Me.blood = b
    End Sub
End Structure

Module Module1
    Sub Main()
        Dim suzuki As New hito(30, "A")
        Console.WriteLine("suzuki.age={0} suzuki.blood={1}",
                           suzuki.age, suzuki.blood)
    End Sub
End Module
suzuki.age=30 suzuki.blood=A

構造体にコンストラクタを自前で用意し、初期化する例です。

構造体の宣言と同時にフィールドの値を設定できます。

オブジェクト初期化子を使う方法

Structure hito
    Dim age As Integer
    Dim blood As String
End Structure

Module Module1
    Sub Main()
        Dim suzuki As New hito With {.age = 40, .blood = "B"}
        Console.WriteLine("suzuki.age={0} suzuki.blood={1}",
                           suzuki.age, suzuki.blood)
    End Sub
End Module
suzuki.age=40 suzuki.blood=B

オブジェクト初期化子{}を使う事で、
コンストラクタを用意せずとも、簡易に記述する事ができます。


これで構造体の初期化ができるようになりました。