嵌套if或者如果使用And运算符,这是更好的方法吗?
单身如果与和
if (txtPackage.Text != string.Empty && txtPackage.Text == "abc")
{
//
}
Run Code Online (Sandbox Code Playgroud)
嵌套如果
if (txtPackage.Text != string.Empty)
{
if (txtPackage.Text == "abc")
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
我不打算进入,但看到这里的一些答案似乎是"我喜欢我的代码看起来像这样"......我觉得我应该说些什么:)
"更好"意味着代码执行速度更快,或者更易读/可扩展.你会想你的窝,如果在的情况下,你将可能有多个检查所有的都有一个共同的要求.
例:
if (myThingy != null)
{
if (myThingy.Text = "Hello") ...
if (myThingy.SomethingElse = 123) ...
}
Run Code Online (Sandbox Code Playgroud)
编辑:还需要说,嵌套你的IF需要比单个IF更多的CPU周期(因此"慢").最重要的是,您的条件顺序可以大大提高性能.
再次出现:
if (somethingQuick() && somethingThatTakesASecondToCalculate()) ...
Run Code Online (Sandbox Code Playgroud)
比(当然)更快
if (somethingThatTakesASecondToCalculate() && somethingQuick()) ...
Run Code Online (Sandbox Code Playgroud)
因为如果IF的第一部分失败,第二部分甚至不会被执行,从而节省了时间.
如果事实上txtPackage.Text不为空但包含"abc"之外的其他内容,您是否会在'嵌套if'示例中执行不同的操作?
如果你不是,我会问你为什么要检查string.empty?
你可以写:
if (txtPackage.Text == "abc")
{
//
}
Run Code Online (Sandbox Code Playgroud)
并完成它.
完全取决于你最终想做什么.
小智 5
没有人提到维护该代码.哪个更容易调试?
如果失败了:
if (thisIsTrue && thisIsTrueToo)
doStuff();
Run Code Online (Sandbox Code Playgroud)
你知道这两个陈述中的一个失败了,但不是哪一个.
如果失败了:
if (thisIsTrue) {
if (thisIsTrueToo)
doStuff();
}
Run Code Online (Sandbox Code Playgroud)
您的异常会告诉您行号.我说要方便维护,因为你可能不会永远使用这个代码.
| 归档时间: |
|
| 查看次数: |
10071 次 |
| 最近记录: |