Методы 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
См. также
Основные понятия
Универсальные типы в Visual Basic