3

これには何かが組み込まれているように感じます。オブジェクトが null の場合、デフォルト値が必要です (または具体的には 0 で、decimal/int のみを使用しています)。この関数を記述する組み込みの方法はありますか?

static int GetDecimalFromObject(object o){
    return o==null?0:(decimal)o;
}
4

5 に答える 5

6

Convert.ToDecimalConvert.ToInt32null が渡された場合はゼロを返します。

于 2013-01-15T16:33:01.737 に答える
2

使ってみて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);
}
于 2013-01-15T16:34:29.473 に答える
0

別のソリューションを提供するためだけに:

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は、キャスト演算子を使用してください。

于 2013-01-15T16:36:35.087 に答える
0

?? 演算子が役立つ場合がありますが、デフォルト値を指定する必要があります。

    // y = x, unless x is null, in which case y = -1. 
    int y = x ?? -1;
于 2013-01-15T16:36:38.207 に答える
0

まず、decimalおよびintデータ型を null にすることはできないため、デフォルトでは 0 になります。

null 許容の小数 (decimal?) がある場合は、HasValueメソッドを使用して null かどうかを確認し、デフォルトの 0 を割り当てます。

于 2013-01-15T16:33:58.223 に答える