“System.Nullable(Of T)”的方法不能用作“AddressOf”运算符的操作数

更新:2007 年 11 月

语句使用 AddressOf 运算符和代表 Nullable<T> 结构的过程的操作数。

**错误 ID:**BC32126

更正此错误

  • 将 AddressOf 子句中的过程名称替换为非 Nullable<T> 成员的操作数。

  • 编写一个对要使用的 Nullable<T> 的方法进行包装的类。在下面的示例中,NullableWrapper 类定义一个名为 GetValueOrDefault 的新方法。因为此新方法不是 Nullable<T> 的成员,所以可将其应用于 nullInstance(一个可以为 null 的类型的实例)以构成 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>