Поделиться через


Методы System.Nullable(Of T) нельзя использовать в качестве операндов оператора AddressOf

Обновлен: Ноябрь 2007

Methods of 'System.Nullable(Of T)' cannot be used as operands of the 'AddressOf' operator

Оператор использует AddressOf с операндом, представляющим процедуру структуры Nullable<T>.

Идентификатор ошибки: BC32126

Чтобы исправить эту ошибку

  • Замените имя процедуры в предложении AddressOf на операнд, который не является членом Nullable<T>.

  • Напишите класс-оболочку для метода Nullable<T>, который необходимо использовать. В следующем примере определяется класс NullableWrapper, определяющий метод GetValueOrDefault. Поскольку этот новый метод не является членом Nullable<T>, он может быть применен к экземпляру типа nullable 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>