BC32126: Os métodos de 'System.Nullable(Of T)' não podem ser usados como operandos do operador 'AddressOf'

Uma instrução usa o operador AddressOf com um operando que representa um procedimento da estrutura Nullable<T>.

ID do erro: BC32126

Para corrigir este erro

  • Substitua o nome do procedimento na cláusula AddressOf por um operando que não seja membro de Nullable<T>.

  • Escreva uma classe que encapsula o método de Nullable<T> que você deseja usar. No exemplo a seguir, a classe NullableWrapper define um novo método chamado GetValueOrDefault. Como esse novo método não é um membro de Nullable<T>, ele pode ser aplicado a nullInstance, uma instância de um tipo que permite valor nulo, para formar um argumento para 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

Confira também