我认为如果total为null,这将会爆炸(我不记得小数是否在开头被初始化为零或零)
public int SomePropertyName
{
get { return Convert.ToInt32(Decimal.Round(total)); }
}
我应该检查null还是> 0?
答案 0 :(得分:5)
十进制是一种值类型 - 对于小数,没有“null”这样的值。
但是,小数超出int
的范围是完全可能的。你可能想要:
decimal rounded = decimal.Round(total);
if (rounded < int.MinValue || rounded > int.MaxValue)
{
// Do whatever you ought to here (it will depend on your application)
}
return (int) rounded;
我对你为什么使用Convert.ToInt32
感到有些困惑,因为你声明你的属性返回decimal
。这里的大局是什么?你想要实现什么目标?
答案 1 :(得分:2)
Decimal是值类型,不能为null。
如果你需要知道它是否已被初始化,你应该使用可以为空的小数:
Decimal? total = null;
public int SomePropertyName
{
get
{
if (total.HasValue) Convert.ToInt32(Decimal.Round(total.Value));
return 0; // or whatever
}
}
答案 2 :(得分:1)
小数是值类型,因此不能为空。
所以不需要检查那里..
答案 3 :(得分:1)
System.Decimal是值类型,因此不能为null。第二件事,该方法的返回值为decimal
,那么为什么要转换为Int32
?
答案 4 :(得分:1)
正如其他人所说,Decimal是一种值类型,不能为null。但是,如果从字符串转换,则Decimal.TryParse是您的朋友......