Frage

Ich habe eine Nullable-Eigenschaft, und ich möchte einen Nullwert zurück. Wie mache ich das in VB.NET?

Zur Zeit verwende ich diese Lösung, aber ich denke, es könnte ein besserer Weg geben.

    Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
        Get
            If Current.Request.QueryString("rid") <> "" Then
                Return CInt(Current.Request.QueryString("rid"))
            Else
                Return (New Nullable(Of Integer)).Value
            End If
        End Get
    End Property
War es hilfreich?

Lösung

Suchen Sie nach dem Stichwort "Nichts"?

Andere Tipps

Ja, es ist nichts in VB.NET oder null in C #.

Die Nullable generischen Datentypen geben dem Compiler die Möglichkeit, ein „Nichts“ (oder null“Wert auf einen Wert Typen zuordnen. Ohne sie explicitally zu schreiben, man kann es nicht tun.

Nullable Types in C #

Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
    Get
        If Current.Request.QueryString("rid") <> "" Then
            Return CInt(Current.Request.QueryString("rid"))
        Else
            Return Nothing
        End If
    End Get
End Property

Oder ist dies die Art, wie ich verwenden, ehrlich ReSharper zu sein hat mich gelehrt:)

finder.Advisor = ucEstateFinder.Advisor == "-1" ? (long?)null : long.Parse(ucEstateFinder.Advisor);

Auf der Zuweisung oben, wenn ich direkt an finder.Advisor * (long?) Null zuweisen * wäre es kein Problem sein. Aber wenn ich versuche, wenn Klausel zu verwenden, ich brauche es zu werfen, wie die (long?)null.

Obwohl Nothing verwendet werden kann, Ihr „bestehender“ Code ist fast richtig; nur nicht versuchen, die .Value zu bekommen:

Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
    Get
        If Current.Request.QueryString("rid") <> "" Then
            Return CInt(Current.Request.QueryString("rid"))
        Else
            Return New Nullable(Of Integer)
        End If
    End Get
End Property

Dies wird dann die einfachste Lösung, wenn Sie es zu reduzieren, um einen If Ausdruck passieren wollen:

Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
    Get
        Return If(Current.Request.QueryString("rid") <> "", _
            CInt(Current.Request.QueryString("rid")), _
            New Nullable(Of Integer))
    End Get
End Property
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top