如果是空值则赋值0
if (Convert.ToDouble(txtfirstjdjes.Text) + Convert.ToDouble(txtsecondlyjdjes.Text) + Convert.ToDouble(txtthirdjdjes.Text) + Convert.ToDouble(txtfourjdjes.Text) > Convert.ToDouble(lblysjes))
里面有的可能为空,怎么实现这个判断
能不能用完以后再变回来呢,有点无奈这种需求。。。。
var first = string.IsNullOrEmpty(txtfirstjdjes.Text)?0:Convert.ToDouble(txtfirstjdjes.Text);
var second= string.IsNullOrEmpty(txtsecondjdjes.Text)?0:Convert.ToDouble(txtsecondjdjes.Text);
var third = string.IsNullOrEmpty(txtthirdjdjes.Text)?0:Convert.ToDouble(txtthirdjdjes.Text);
var four= string.IsNullOrEmpty(txtfourjdjes.Text)?0:Convert.ToDouble(txtfourjdjes.Text);
var ysjes= string.IsNullOrEmpty(lblysjes)?0:Convert.ToDouble(lblysjes);
if (first+second+third+four>ysjes)
不过上面的代码重用性很差,你可以自己扩展一个方法
public static double ToDouble(this string str)
{
return string.IsNullOrEmpty(str)?0:Convert.ToDouble(str);
}
然后调用txtfirstjdjes.Text.ToDouble()
@Rich.T: 能不能用完以后再变回来呢,有点无奈这种需求。。。
@Ole_Yao:
你指的改回来是什么意思?
@Rich.T: 哦,没事,现在我添加了方法,但是报了很多莫名其妙的错
@Rich.T: 把扩展的方法注释掉就不报错了,什么原因啊,大哥
@Ole_Yao:
扩展方法得放在静态类中,你建一个类public static class
@Rich.T: 那个已经好了,但是在判断中报错:输入字符串的格式不正确。这可能是什么原因啊
@Ole_Yao:
你得截图啊,你就这样一句话我哪知道
三元表达式
txtfirstjdjes.Text==null?"0":txtfirstjdjes.Text;
加一个方法 进行判断一下
//委托 Func<string, double> toDouble = s => { double d = 0d; if (!string.IsNullOrEmpty(s)) double.TryParse(s, out d); return d; }; if (toDouble(txtfirstjdjes.Text) + toDouble(txtsecondlyjdjes.Text) + toDouble(txtthirdjdjes.Text) + toDouble(txtfourjdjes.Text) > toDouble(lblysjes))
你好,你这有必要吗?不是为了技术而编程,效率很低的委托,而且你写成这样,有必要吗?就为了凸显函数表达式?
@ifecy:
只是举一个例子而已, 这种效率可以忽略,用的比较多,很多开源项目 也都会这么用,很灵活。
double num1=string.isnullorempty(txtfirstjdjes.Text.trim())?0:convert.todouble(txtfirstjdjes.Text.trim())
double num2=string.isnullorempty(txtsecondlyjdjes.Text.trim())?0:convert.todouble(txtsecondlyjdjes.Text.trim())
double num3=string.isnullorempty(txtthirdjdjes.Text.trim())?0:convert.todouble(txtthirdjdjes.Text.trim())
double num4=string.isnullorempty(txtfourjdjes.Text.trim())?0:convert.todouble(txtfourjdjes.Text.trim())
自己写个扩展方法呗
1 public static class Objects 2 { 3 /// <summary> 4 /// 将对象安全的转换为int类型(如果转换失败,则为默认值 true:1 false:0) 5 /// </summary> 6 /// <param name="o"></param> 7 /// <param name="defaultValue">默认值</param> 8 /// <returns></returns> 9 public static int ToSafeInt32(this object o, int defaultValue) 10 {
int num = defaultValue; 16 if (o.GetType() == Type.GetType("System.Boolean")) 17 { 18 return (Convert.ToBoolean(o) ? 1 : 0); 19 } 20 try 21 { 22 num = Convert.ToInt32(o); 23 } 24 catch 25 { 26 } 27 return num; 28 }
}
扩展方法,建议针对类型使用,object影响范围太大,在编译过程中,循环寻找目标类型。
@ifecy: 这玩意真得是object类型的。 你要说从datatable 搞出一些数据,那全都是object类型的