2008-09-16 44 views
1

我有一個空屬性,我想返回一個空值。我如何在VB.NET中做到這一點?Nullable(Of T)的空值是什麼?

目前我使用這個解決方案,但我認爲可能有更好的方法。

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 

回答

6

您是否在尋找關鍵字「Nothing」?

+0

嗯,其實是的。我發現實際上Nothing沒有等同於C#null,而我認爲它僅用於查看對象是否被實例化。 – thomasb 2008-09-16 14:03:57

2

是的,它在VB.NET中沒有,或在C#中爲null。

可空通用的數據類型爲編譯器指定「無」(或空」值的值類型的可能性。如果沒有explicitally寫它,你不能這樣做。

Nullable Types in C#

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 
0

或者這是我使用,說實話的方式ReSharper的教我:)

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

在上述分配,如果我直接分配null以finder.Advisor *(長?)*沒有問題。但是,如果我嘗試使用if子句,我需要將其轉換爲(long?)null

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 
相關問題