2008-09-16 11 views
1

私はnull可能なプロパティを持っており、null値を返したいと思います。 VB.NETでどうすればいいですか?Nullable(Of T)のnull値は何ですか?

現在、私はこのソリューションを使用していますが、もっと良い方法があると思います。

答えて

6

キーワード「Nothing」をお探しですか?

+0

ハム:

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式にそれを減らしたいために起こる場合は、最も簡単な解決策になります。実際にはNothingはC#nullと同等ですが、オブジェクトがインスタンス化されたかどうかを確認するためだけに使用されていると考えていました。 – thomasb

2

はい、VB.NETではNothing、C#ではnullです。

のNullableジェネリックデータ型コンパイラにexplicitallyそれを書かなく、あなたがそれを行うことはできません。値の型に「何も」(またはnull」の値を代入しないために可能性を与える。

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); 

を教えてきました私は正直に言うと、使用する方法である私が直接finder.Advisorにnullを割り当てた場合は、上記の割り当て*(長い?)*問題はありません。しかし、if節を使用しようとすると、そのようにキャストする必要があります。(long?)null

0

Nothingが使用できますが、あなたの「既存の」コードはほぼ正しいです。ただ.Valueを取得しようとしません。実際にはい、

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 
関連する問題