我有一个可以为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
答案 0 :(得分:6)
您是否在寻找关键字“Nothing”?
答案 1 :(得分:2)
是的,它在VB.NET中没什么,在C#中是null。
Nullable泛型数据类型使编译器可以为值类型分配“Nothing”(或null“值。如果没有明确地编写它,就不能这样做。
答案 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