代码之家  ›  专栏  ›  技术社区  ›  thomasb DaveRead

nullable(of t)的空值是多少?

  •  1
  • thomasb DaveRead  · 技术社区  · 16 年前

    我有一个可以为空的属性,我想返回一个空值。如何在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 回复  |  直到 10 年前
        1
  •  6
  •   Jon    16 年前

    你在找关键字“无”?

        2
  •  2
  •   Luca Molteni    16 年前

    是的,它在vb.net中不是什么,在c中是空的。

    可以为空的通用数据类型使编译器能够为值类型分配“无”(或空)值。如果没有明确的文字,你就不能做到。

    Nullable Types in C#

        3
  •  1
  •   gregmac    16 年前
    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
    
        4
  •  0
  •   Barbaros Alp    16 年前

    或者这就是我所用的方式,老实说,雷斯哈珀教会了我:)

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

    如果我直接将空值赋给finder.advisor*(long?)*不会有问题的。但是如果我试图使用if子句,我需要像这样强制转换它 (long?)null .

        5
  •  0
  •   Mark Hurd    10 年前

    虽然 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