string mvi = Moneys.GetValue(8) as string;
if (mvi == null)
// I am getting exception Here if its null?
money.Currency= Convert.ToDecimal("");
else
// Currency is Decimal
money.Currency= Convert.ToDecimal(mvi);
// I am getting exception Here if its null?
money.Currency= Convert.ToDecimal("");
有人能告诉我怎么做吗?
答案 0 :(得分:4)
空字符串不能转换为十进制。您可以像这样执行检查
if (string.IsNullOrEmpty(mvi))
{
money.Currency = 0M;
}
else
{
decimal temp = 0M;
if (decimal.TryParse(mvi, out temp))
{
money.Currency = temp;
}
else
{
// you have an invalid input, handle
}
}
答案 1 :(得分:1)
您可以使用TryParse
代替Convert.ToDecimal()
:
decimal theValue;
string mvi = Moneys.GetValue(8) as string;
Decimal.TryParse( mvi, out theValue );
或者,您可以使用null coallescing运算符来处理空值:
var theValue = Convert.ToDecimal( mvi ?? "0" );
但是,在这两种情况下,如果输入的值不是有效小数,则必须决定该怎么做。
答案 2 :(得分:1)
这是我的版本Anthony Pegram的答案:
string mvi = Moneys.GetValue(8) as string;
money.Currency = 0M;
if (!String.IsNullOrEmpty(mvi))
if (!Decimal.TryParse(mvi, out money.Currency))
throw new FormatException("mvi");
总的来说,它看起来有点像Alex制作的那个,只是它将空视为零并显示更多的错误处理。
答案 3 :(得分:0)
http://msdn.microsoft.com/en-us/library/hf9z3s65.aspx
我想你想要Convert.ToDecimal(“0.0”);否则你得到一个编辑:ArgumentNullException