Lire en anglais

Partager via


BC32126 : les méthodes de « System.Nullable(Of T) » ne peuvent pas être utilisées en tant qu’opérandes de l’opérateur « AddressOf »

Une instruction utilise l’opérateur AddressOf avec un opérande qui représente une procédure de la structure Nullable<T>.

ID d’erreur : BC32126

Pour corriger cette erreur

  • Remplacez le nom de la procédure dans la clause AddressOf par un opérande qui n’est pas membre de Nullable<T>.

  • Écrivez une classe qui encapsule la méthode de Nullable<T> que vous souhaitez utiliser. Dans l’exemple suivant, la classe NullableWrapper définit une nouvelle méthode appelée GetValueOrDefault. Puisque cette nouvelle méthode n’est pas membre de Nullable<T>, elle peut être appliquée à nullInstance, une instance d’un type Nullable, pour former un argument pour 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

Voir aussi