関係ないけど、とある処理をするために大量のパラメータセットが必要で、やっかいなことに処理をクラスとして独立できないからしょうがない、構造体を定義してパラメータに使うかと思ったんですが、え〜、構造体なんて使うの何年ぶりだそもそもVB.NETで構造体なんか使ったことないどころか殆ど見たこともないんですがどうやって書くんだというw


で、調べたらstructureが構造体、らしいんですがなぜか構造体の中の変数にスコープが必須とかよくわからない制限があって、サンプルを見たら‥‥、

Private Structure Habitant
    Public Name As String
    Public Room As Integer
    Private InnerPerson As String
    Public Sub setProfile(ByVal aName As String, ByVal aRoom As Integer, ByVal aInnerPerson As String)
        Name = aName
        Room = aRoom
        InnerPerson = aInnerPerson
    End Sub
End Structure

Public Class Apartment
    Private FHabitants As IList(Of Habitant)
    
    Private Sub new()
        FHabitants = New List(Of Habitant)
    
        Dim oChar1 as Habitant
        oChar1.setProfile("ゆのさま", 201, "阿澄")
        FHabitants(oChar1)

        Dim oChar2 as Habitant
        oChar2.setProfile("みやこ", 202, "水橋")
        FHabitants(oChar2)

        Dim oChar3 as Habitant
        oChar3.setProfile("ヒロ", 101, "マミ")
        FHabitants(oChar3)
    End Sub
    
    Public Readonly Property Habitants As IList(Of Habitant)
        Get
            Return FHabitants
        End Get
    End Property
End Class

どういうことだよ、コイツ、クラスじゃねーか!

(一応、クラス型の変数がインスタンスに対するポインタなのに対して、構造体型の変数はプリミティブ型と同じ扱いなので引数に渡したときは値がコピーされる、ってのはありますが、String型がプリミティブでなくオブジェクトな時点で既にそんな差違を気にする人はいません)