sdr は私の sqldatareader であり、10 進数型の curPrice 値が null であることを確認したいと考えています。
inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);
これは私が得ているエラーメッセージです:
型「10 進数」を暗黙的に変換できませんか? 「10進数」に。明示的な変換が存在します (キャストがありませんか?)
どこが間違っているのか、誰か教えてください。
sdr は私の sqldatareader であり、10 進数型の curPrice 値が null であることを確認したいと考えています。
inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);
これは私が得ているエラーメッセージです:
型「10 進数」を暗黙的に変換できませんか? 「10進数」に。明示的な変換が存在します (キャストがありませんか?)
どこが間違っているのか、誰か教えてください。
decimal?
null 許容の10 進数であることを示します。プロパティを使用しValue
て実際の値を取得する必要があります (存在する場合は、 で決定されますHasValue
)。
は null 非許容の 10 進数であると想定しています。その場合、三項演算子の真の側からcurPrice
返すよりも、より良い値を返す必要もあります。null
null 許容型に変換curPrice
するか、null 許容型の .Value プロパティを使用します。
curPrice
がクラスのプロパティである場合
public decimal? curPrice
{
get;
set;
}
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);
ですか?