3

我觉得有一些内置的东西。如果对象为空,我想要默认值(或者特别是 0,我只使用十进制/整数)。有没有内置的方法来编写这个函数?

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

5 回答 5

6

Convert.ToDecimal如果传递 null ,Convert.ToInt32将返回零。

于 2013-01-15T16:33:01.737 回答
2

尝试使用Convert.ToDecimal()

与 value 等效的十进制数,如果 value 为空,则为 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

首先,decimalint数据类型不能为空,所以默认为0。

如果您有一个可为空的小数(十进制?),请使用该HasValue方法检查它是否为空,然后指定您的默认值 0。

于 2013-01-15T16:33:58.223 回答
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 回答