怎么做这个转换?

时间:2010-04-09 21:30:45

标签: c#

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("");

有人能告诉我怎么做吗?

4 个答案:

答案 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