您的位置:首页 > 其它

记录一个decimal格式转换出现的问题

2016-09-22 11:34 274 查看
如下的一串代码

parm.Month2 = Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month2"].Value.ToString());


本意应该是读取 ultraGrid1中 MONTH2栏位的值然后转换成decimal 格式保存到对象中。

当MONTH2栏位输入了值得时候,这段固然是没错的。

但是当它为空的时候,程序运行的时候就会报错了,

然后我添加了个判断 把代码改成如下

parm.Month1 = ultraGrid1.Rows[i].Cells["MONTH1"].Value.ToString() == "" ? 0 : Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month1"].Value.ToString());


但是运行起来还是报同样的错

然后仔细想下 会不会是它为空代表着ultraGrid1.Rows[i].Cells[“MONTH1”].Value.ToString()应是null而不是”“呢? 于是改成

parm.Month1 = ultraGrid1.Rows[i].Cells["MONTH1"].Value.ToString() == null ? 0 : Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month1"].Value.ToString());


然而也并没有什么用

于是到这里 就算是我这样的小白 也都明白了

正确的话 有几种方式

parm.Month1 = Convert.ToDecimal(ultraGrid1.Rows[i].Cells["MONTH1"].Value.ToString3());
parm.Month1 = ultraGrid1.Rows[i].Cells["MONTH1"].Value == null ? 0 : Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month1"].Value.ToString());
parm.Month1 = ultraGrid1.Rows[i].Cells["MONTH1"].Value.ToString2() == "" ? 0 : Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month1"].Value.ToString());


之前我没用过.ToString3()跟.ToString2() 所以一直没发现它们的好处

.ToString2() 转换为字符串 null转换为空字符串

.ToString3() 转换为字符串 null和空字符串转换成0(针对于数字型的字符串)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐