我觉得有一些内置的东西。如果对象为空,我想要默认值(或者特别是 0,我只使用十进制/整数)。有没有内置的方法来编写这个函数?
static int GetDecimalFromObject(object o){
return o==null?0:(decimal)o;
}
我觉得有一些内置的东西。如果对象为空,我想要默认值(或者特别是 0,我只使用十进制/整数)。有没有内置的方法来编写这个函数?
static int GetDecimalFromObject(object o){
return o==null?0:(decimal)o;
}
Convert.ToDecimal
如果传递 null ,Convert.ToInt32
将返回零。
与 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);
}
首先,decimal
和int
数据类型不能为空,所以默认为0。
如果您有一个可为空的小数(十进制?),请使用该HasValue
方法检查它是否为空,然后指定您的默认值 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
如果您希望在不属于正确类型的情况下抛出异常,请使用强制转换运算符。
这 ??运算符可能会有所帮助,但您必须提供默认值:
// y = x, unless x is null, in which case y = -1.
int y = x ?? -1;