'System.Nullable(Of T)' のメソッドを 'AddressOf' 演算子のオペランドとして使用することはできません。
更新 : 2007 年 11 月
ステートメントに AddressOf 演算子が使用され、Nullable<T> 構造体のプロシージャを表すオペランドが指定されています。
Error ID: BC32126
このエラーを解決するには
AddressOf 句のプロシージャ名を、Nullable<T> のメンバでないオペランドで置き換えます。
使用する Nullable<T> のメソッドをラップするクラスを記述します。以下の例では、NullableWrapper クラスで GetValueOrDefault という新しいメソッドを定義します。この新しいメソッドは Nullable<T> のメンバではないので、Null 許容型のインスタンスである nullInstance に適用して、AddressOf の引数を生成できます。
Module Module1 Delegate Function Deleg() As Integer Sub Main() Dim nullInstance As New Nullable(Of Integer)(1) Dim del As Deleg ' GetValueOrDefault is a method of the Nullable generic ' type. It cannot be used as an operand of AddressOf. ' del = AddressOf nullInstance.GetValueOrDefault ' The following line uses the GetValueOrDefault method ' defined in the NullableWrapper class. del = AddressOf (New NullableWrapper(Of _ Integer)(nullInstance)).GetValueOrDefault Console.WriteLine(del.Invoke()) End Sub Class NullableWrapper(Of T As Structure) Private m_Value As Nullable(Of T) Sub New(ByVal Value As Nullable(Of T)) m_Value = Value End Sub Public Function GetValueOrDefault() As T Return m_Value.Value End Function End Class End Module