2008-09-16 16 views
1

NULL özellikte bir mülküm var ve boş bir değer vermek istiyorum. Bunu VB.NET'te nasıl yaparım?Nullable (Of T) 'nin null değeri nedir?

Şu anda bu çözümü kullanıyorum, ancak daha iyi bir yol olabileceğini düşünüyorum.

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 

cevap

6

"Nothing" anahtar kelimesini mi arıyorsunuz?

+0

Hum evet. Görüyorum ki aslında hiçbir şey C# null ile eşdeğer değil, sadece bir nesnenin taklit edilip edilmediğini görmek için kullanıldığını sanıyordum. – thomasb

2

Evet, VB.NET'te hiçbir şey yok, ya da C# 'de yok.

null jenerik veri türü derleyici bir değer türü için "Hiçbir şey" (ya da boş" değeri atamak imkanı vermek. Explicitally yazıyorum olmadan, bunu yapamaz.

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

Ya da bu ReSharper bana :) On

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

öğretti i dürüst olmak gerekirse, kullanma yoludur i doğrudan finder.Advisor için boş atarsanız yukarıdaki atama * (uzun?) * sorun olmaz. Ama eğer kullanmam gerekiyorsa, (long?)null gibi yayınlamam gerekiyor.

0

Nothing kullanılabilmesine rağmen, "varolan" kodunuz neredeyse doğrudur; Sadece almak çalışmayın .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 

Bir If ifadesi bunu azaltmak isteyen için ne bu o zaman en basit çözümü haline gelir: aslında

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