'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
    

参照

概念

null 許容値型

Visual Basic におけるジェネリック型

参照

AddressOf 演算子

Nullable<T>