構造体の中に配列を含める場合、初期化時に注意が必要です。
構造体の中に配列を宣言する
Structure Data
    Dim A As Integer
    Dim B As String
    Dim C() As Integer
    Dim D() As Integer = {10,50,100}  'エラー
    Dim E(2) As Integer = {10, 50, 100}  'エラー
    Dim F(2) As Integer  'エラー
End Structure構造体の中に配列を含める場合、空の配列の宣言のみ有効です。
初期化子を使って初期値を設定しようとしてもエラーとなります。
また、配列の長さを設定する事もできません。
実際に配列を使うには?
Structure Data
    Dim A As Integer
    Dim B As String
    Dim C() As Integer
End Structure
Module Module1
    Sub Main()
        Dim d As Data
        d.C = New Integer() {10, 50, 100}
        For Each data As Integer In d.C
            Console.WriteLine(data)
        Next
    End Sub
End Module10
50
100ひとつの方法として、Dimを使って構造体を宣言した場合は、
Newを使って配列を初期化します。
初期値を与えない場合は以下のような書き方です。
Integer型のように数値型の場合は、配列の各要素が0で初期化されます。
String型のような参照型の場合は、Nothingで初期化されます。
Dim d As Data
d.C = New Integer(2) {}
d.C(0) = 10
d.C(1) = 50
d.C(2) = 100スポンサーリンク
コンストラクタを使用する方法
Structure Data
    Dim A As Integer
    Dim B As String
    Dim C() As Integer
    Sub New(len As Integer)
        Me.C = New Integer(len) {}
    End Sub
End Structure
Module Module1
    Sub Main()
        Dim d As New Data(2)
        d.C(0) = 10
        d.C(1) = 50
        d.C(2) = 100
        For Each data As Integer In d.C
            Console.WriteLine(data)
        Next
    End Sub
End Module
10
50
100今度はコンストラクタを使って配列を初期化した例です。
コンストラクタを呼び出すにはNewキーワードが必要になります。
無理やり配列を使う方法
Structure Data
    Dim A1 As Integer
    Dim A2 As Integer
    Dim A3 As Integer
End Structure
Module Module1
    Sub Main()
        Dim d As Data
        d.A1 = 10
        d.A2 = 50
        d.A3 = 100
        Console.WriteLine(d.A1)
        Console.WriteLine(d.A2)
        Console.WriteLine(d.A3)
    End Sub
End Module特殊な事情がある場合、
連続的なデータを手動で用意すれば、配列のように使う事もできます。
(あまりオススメはしませんが。)
以上、構造体の中の配列の初期化についての説明でした。

