2016-09-01 12 views
6

文字列が空であればnullを渡して、文字列をdoubleに変換したいとします。誰かが構文を教えてくれますか?どこが間違っているの? 現在の構文:それは付加価値ではなく、参照型なのでcで倍精度に変換するときにデフォルト値を設定する#

IngredientMinRange = !string.IsNullOrEmpty(MinRange) ? Convert.ToDouble(MinRange) : null 
+2

doubleは値型ですnullを割り当てるにはNULLを許可する必要があります –

+0

null可能public doubleですか? IngredientMinRange {get;セット; }ここにdefinationがあります。 – Programmermid

+0

これはnullable doubleを返さない:Convert.ToDouble(MinRange) – Rumplin

答えて

10

doublenullすることはできません。 IngredientMinRangeがすでにある場合は

if(ingredientMinRange.HasValue) 
{ 
    double value = ingredientMinRange.Value; 
} 

Using Nullable Types (C# Programming Guide)


:あなたはHasValueValueプロパティを使用することができます

double? ingredientMinRange = null; 
if(!string.IsNullOrEmpty(MinRange)) 
    ingredientMinRange = Convert.ToDouble(MinRange); 

後でdouble値をしたい場合:あなたはNullable<double>代わりに使用することができますDouble? -propertyをコメントとして使用すると、値を割り当てることができます

IngredientMinRange = string.IsNullOrEmpty(MinRange) ? (double?)null : Convert.ToDouble(MinRange); 
+0

を取得しているよりも、 'TryParse'の代わりに' Convert.ToDouble'を使用しますか? (ちょうど尋ねる)それは速いか何かですか? –

+0

@MatthiasBurger:いいえ、私は 'double.Parse'または' double.TryParse'(入力が無効な場合)を好むでしょう。しかしOPは 'Convert.ToDouble'を使用していたので、私はそれが有効であると仮定しました。たぶん 'Convert.ToDouble'は、入力が' string'の代わりに 'object'の場合に便利です。 –

+0

ああ大丈夫、いつも別の意見を得るには良い:) –

1

ダブルあなたがNullable<double>double?を使用する必要がありますにnullを割り当てるには:ifを経由して(上図のように)または1つのラインでは、しかし、あなたはnullキャストする必要があります。ここでは、この方法でそれを割り当てます。

decimal temp; 
decimal? IngredientMinRange = decimal.TryParse(MinRange, out temp) ? temp : (decimal?)null; 

あなたはIngredientMinRangeで作業を続けることができます。 IngredientMinRange.Valueで値を取得するか、ヌルであるかどうかを確認するIngredientMinRange.HasValue

関連する問題