Nullable(Of T)的空值是多少?

时间:2008-09-16 13:51:39

标签: vb.net nullable

我有一个可以为null的属性,我想返回一个空值。我如何在VB.NET中做到这一点?

目前我使用此解决方案,但我认为可能有更好的方法。

    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

5 个答案:

答案 0 :(得分:6)

您是否在寻找关键字“Nothing”?

答案 1 :(得分:2)

是的,它在VB.NET中没什么,在C#中是null。

Nullable泛型数据类型使编译器可以为值类型分配“Nothing”(或null“值。如果没有明确地编写它,就不能这样做。

Nullable Types in C#

答案 2 :(得分:1)

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

答案 3 :(得分:0)

或者这就是我使用的方式,说实话ReSharper告诉我:)

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

在上面的赋值中,如果我直接将no赋值给finder.Advisor *(long?)*就没有问题。但是,如果我尝试使用if子句,我需要像(long?)null那样强制转换它。

答案 4 :(得分:0)

虽然可以使用Nothing,但您的“现有”代码几乎是正确的;只是不要试图获得.Value

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

如果您碰巧想要将其缩减为If表达式,那么这将成为最简单的解决方案:

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