1

我有一个可为空的属性,我想返回一个空值。我如何在 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
4

5 回答 5

6

您在寻找关键字“无”吗?

于 2008-09-16T13:52:55.870 回答
2

是的,它在 VB.NET 中是 Nothing,在 C# 中是 null。

Nullable 泛型数据类型使编译器可以将“无”(或空)值分配给值类型。如果不显式编写它,您将无法执行此操作。

C# 中的可空类型

于 2008-09-16T13:58:50.300 回答
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
于 2008-09-16T23:16:24.080 回答
0

或者这就是我使用的方式,老实说 ReSharper 教会了我 :)

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

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

于 2009-01-13T17:28:07.317 回答
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
于 2014-02-01T05:43:12.480 回答