从文本框取数字,如果文本框为空,就令其为零,如何处理最简洁经典呢?我现在的做法,是用异常处理的,这样好像代码最少,但是据说,异常,能不用就不用,是这样吗?
如果不用异常,用什么方法最好呢?
try
{
dbljhzl = Decimal.Parse(txtjhyz.Text);
}
catch
{
dbljhzl=0;
}
如果不用异常,用什么方法最好呢?
try
{
dbljhzl = Decimal.Parse(txtjhyz.Text);
}
catch
{
dbljhzl=0;
}
if (string.IsNullOrEmpty(txtjhyz.Text))
{
dbljhzl=0;
}
else
{
dbljhzl=Decimal.Parse(txtjhyz.Text); }
{
dbljhzl = Decimal.Parse(txtjhyz.Text);
}
catch
{
dbljhzl=0;
}if (string.IsNullOrEmpty(txtjhyz.Text))
{
dbljhzl=0;
}
else
{
dbljhzl=Decimal.Parse(txtjhyz.Text);
}再问,以上两种方法,哪种效率高些呢?
另外,是不是“异常处理”能不用就不用呢?
switch (e.KeyChar)
{
case (Char)ConsoleKey.D0:
case (Char)ConsoleKey.D1:
case (Char)ConsoleKey.D2:
case (Char)ConsoleKey.D3:
case (Char)ConsoleKey.D4:
case (Char)ConsoleKey.D5:
case (Char)ConsoleKey.D6:
case (Char)ConsoleKey.D7:
case (Char)ConsoleKey.D8:
case (Char)ConsoleKey.D9:
case (Char)ConsoleKey.Decimal:
case (Char)ConsoleKey.Backspace:
e.Handled = false;
break;
default:
e.Handled = true;
break;
}
base.OnKeyPress(e);读取的时候,如下写即可:
dbljhzl =string.IsNullorEmpty(txtjhyz.Text)?0: Decimal.Parse(txtjhyz.Text);
{
int intPort=0;
if(!int.TryParse(txtPort.Text, out intPort))
{
return "请输入数字";
}
else
{
dbljhzl =Convert.ToDecimal(txtjhyz.Text);}
} else
{
dbljhzl =0;
}
所以必须加服务端验证服务端分两种一种手写判断条件,但绝不能像楼主那样来做,是一种方法,但是try catch生下来不是干件事的,
这个效率肯定是最不好的
另一种就是验证控件,这里面asp.net自代的有很多,还可以自己定义,或是第三方的
请楼主多多实践,也就明白其中原由
Decimal.TryParse(txtjhyz.Text, out dbljhzl);
如果文本框为空赋0不是就给文本框的值
顶
再者是WebForm还是WinForm,webform可用javascript和校验控件和后台代码检验;
如果没有限制,全在这处理,就要验证文本框是不是数字,可以调用vb库的isnumeric函数或者用正则表达式
来做,这是最精简的了。取控件值就用异常处理不是好的构架。
Decimal.TryParse(txtjhyz.Text, out dbljhzl);