我有一个类型为int
的变量,我想将其初始化为文本框中的值(示例中为textBox1)
以前,我使用过第二个例子(2)。然而,当我学到更多关于编程的知识时,我听说使用空catch
- 语句并不是一个好主意。
我正在寻找这三个问题的答案: 我应该切换到示例(1)中的代码吗? 为什么/为什么不呢? 它们之间有什么区别?
int myInteger;
最好用什么?这(1):
int parsedValue;
if (!int.TryParse(textBox1.Text, out parsedValue))
{
MessageBox.Show("Numbers only, please");
return;
}
myInteger = parsedValue;
......或者这(2):
try
{
myInteger = int.Parse(textBox1.Text);
}
catch
{
MessageBox.Show("Numbers only, please");
}
答案 0 :(得分:4)
Int.TryParse是更好的解决方案。如果可以避免,为什么要抛出异常呢?如果你想把很多字符串转换成整数并且它们失败了,你的程序将会非常慢,因为Integer.TryParse比抛出异常要快得多。
但最重要的是,第一个是更好的rpgoramming风格!
答案 1 :(得分:3)
在这种特殊情况下,请使用TryParse
,这就是它的用途。
一般来说,空 Catch
块确实非常糟糕 - 从不这样做(至少留下评论来解释为什么块存在并且为空)。但是你的代码不是这样做:catch块不是空的,Catch
的这种用法完全没问题(除此之外,在这种特殊情况下还有一个更好的解决方案)