次の方法で共有


方法: コレクション初期化子によって使用される拡張メソッドの追加を作成する (Visual Basic)

コレクション初期化子を使用してコレクションを作成すると、Visual Basic コンパイラは、Add メソッドのパラメーターがコレクション初期化子の値の型と一致するコレクション型のAdd メソッドを検索します。 この Add メソッドは、コレクション初期化子の値をコレクションに設定するために使用されます。

一致する Add メソッドが存在せず、コレクションのコードを変更できない場合は、コレクション初期化子に必要なパラメーターを受け取る Add という拡張メソッドを追加できます。 これは通常、ジェネリック コレクションにコレクション初期化子を使用する場合に行う必要があります。

次の例は、コレクション初期化子を使用してEmployee型のオブジェクトを追加できるように、ジェネリック List<T>型に拡張メソッドを追加する方法を示しています。 拡張メソッドを使用すると、短縮コレクション初期化子構文を使用できます。

Public Class Employee
    Public Property Id() As Integer
    Public Property Name() As String
End Class
Imports System.Runtime.CompilerServices

Module Module1

    <Extension()>
    Sub Add(ByVal list As List(Of Employee), ByVal id As Integer,
                                             ByVal name As String)
        list.Add(New Employee With {.Id = id, .Name = name})
    End Sub

End Module
Sub Main()
    Dim employees = New List(Of Employee) From {{1, "Adams, Ellen"},
                                                {2, "Hamilton, James R."},
                                                {3, "Ihrig, Ryan"}}
End Sub

こちらも参照ください