2008-09-17 4 views
7

以下戻り速記もし+ null許容型(C#)と

間の暗黙的な変換が存在しないための条件式のタイプを決定することができない「二重」および「<ヌル>」

aNullableDouble = (double.TryParse(aString, out aDouble) ? aDouble : null) 

aDoubleを使用して往復の代わりにaNullableBoolを使用するだけの理由は、aNullableDoubleが生成されたEntのプロパティであるためですityアウトクラスとして使用できない授業クラス。

答えて

9
aNullableDouble = double.TryParse(aString, out aDouble) ? (double?)aDouble : null; 
1
aNullableDouble = (double.TryParse(aString, out aDouble)?new Nullable<double>(aDouble):null) 
+0

新しいNullabled()?!それはダブルじゃない?構文は? – ljs

+0

ええ、それもうまくいくでしょう。私の方がより明示的ですが、どちらの形式でも同じコードが生成されます。 –

7

ただ、読みやすくなるでしょう...代わりに速記の完全な構文に構文を吹き飛ばす:

aNullableDouble = null; 
if (double.TryParse(aString, out aDouble)) 
{ 
    aNullableDouble = aDouble; 
} 
+0

ニース。それははっきりしています。 – ljs

0

.NETはnullable typesをサポートしていますが、それらを宣言することによって、あなたはそれらをちょっと違って扱わなければなりません(理解できるように、普通は値型であるものが参照型のようなものです)。

これは、自動的に生成されるクラスのセットの場合のように、null可能なdoubleと通常のdoubleの間の変換をあまりにも多くしなければならない場合にも役立ちません。

1

null可能な型を使用することの興味深い副作用は、実際には簡略なIFを使用することができないということです。省略表現IFは、両方の条件から同じ型を返さなければならず、どちらの場合もnullにすることはできません。だから、キャストまたは書き出してください:)

関連する問題