13

sdr は私の sqldatareader であり、10 進数型の curPrice 値が null であることを確認したいと考えています。

inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);

これは私が得ているエラーメッセージです:

型「10 進数」を暗黙的に変換できませんか? 「10進数」に。明示的な変換が存在します (キャストがありませんか?)

どこが間違っているのか、誰か教えてください。

4

4 に答える 4

28

decimal?null 許容の10 進数であることを示します。プロパティを使用しValueて実際の値を取得する必要があります (存在する場合は、 で決定されますHasValue)。

は null 非許容の 10 進数であると想定しています。その場合、三項演算子の真の側からcurPrice返すよりも、より良い値を返す必要もあります。null

于 2012-05-09T20:52:20.327 に答える
13

null 許容型に変換curPriceするか、null 許容型の .Value プロパティを使用します。

curPriceがクラスのプロパティである場合

public decimal? curPrice
{
   get;
   set;
}
于 2012-05-09T21:00:11.730 に答える
4

decmial?タイプを に変換するのはどうdecimalですか?

がnull のinrec.curPrice場合、どのような値を取得する必要があります。sdr.GetDecmial(7)

inrec.curPrice = sdr.GetDecimal(7) ?? 0M;

返されたものが null の場合は、0 を使用することをお勧めします。0M他の10進数値に変更しない場合。

--- 再生後に更新

どうinrec.curPrice = sdr.IsDBNull(7) ? 0M : sdr.GetDecimal(7);ですか?

于 2012-05-09T21:02:19.237 に答える