これには何かが組み込まれているように感じます。オブジェクトが null の場合、デフォルト値が必要です (または具体的には 0 で、decimal/int のみを使用しています)。この関数を記述する組み込みの方法はありますか?
static int GetDecimalFromObject(object o){
return o==null?0:(decimal)o;
}
これには何かが組み込まれているように感じます。オブジェクトが null の場合、デフォルト値が必要です (または具体的には 0 で、decimal/int のみを使用しています)。この関数を記述する組み込みの方法はありますか?
static int GetDecimalFromObject(object o){
return o==null?0:(decimal)o;
}
Convert.ToDecimal
Convert.ToInt32
null が渡された場合はゼロを返します。
使ってみてConvert.ToDecimal()
value と同等の 10 進数、または value が null の場合は 0 (ゼロ)。
このようにしてみてください。
static decimal GetDecimalFromObject(object o)
{
return o == null ? Convert.ToDecimal(0) : Convert.ToDecimal(o);
}
またはより効率的です。
static decimal GetDecimalFromObject(object o)
{
return Convert.ToDecimal(o);
}
別のソリューションを提供するためだけに:
static int GetDecimalFromObject(object o)
{
return o as int? ?? 0;
}
一般的なバージョン:
static T GetValueFromObject<T>(object o) where T : struct
{
return o as T? ?? default(T);
}
as
演算子を使用したことに注意してください。が適切なタイプでない場合に例外をスローする場合o
は、キャスト演算子を使用してください。
?? 演算子が役立つ場合がありますが、デフォルト値を指定する必要があります。
// y = x, unless x is null, in which case y = -1.
int y = x ?? -1;
まず、decimal
およびint
データ型を null にすることはできないため、デフォルトでは 0 になります。
null 許容の小数 (decimal?) がある場合は、HasValue
メソッドを使用して null かどうかを確認し、デフォルトの 0 を割り当てます。