【发布时间】:2012-07-18 17:01:33
【问题描述】:
所以,首先,我看过这样的帖子:How to find which condition is true without using if statement
这不是我所需要的,虽然这个想法是相关的,因为我希望它是更具可读性的代码。
我认为 Switch 是最好的选择,但让我解释一下。
我有这样的声明:
if (input == string.Empty || typeComboBox.Text == null)
{
MessageBox.Show("Nothing to encrypt!", "Nothing Selected!");
return null;
}
所以这里的想法是我曾经把这个语句分成两个“IF”语句,这不是什么大不了的事,但为了可读性,以及我不断减少代码的努力,我想结合声明合二为一。
如果输入为空,我希望 MessageBox.Show 中的第一个参数出现,而不是第二个。
如果 typeComboBox.Text 为空,我希望出现第二个选项,而不是第一个。
如果它们都是真实的陈述,我希望它们都出现。
现在,我的目标是在不使用多个测试或方法的情况下完成这两项工作。基本上,我的意思是:如果我能找到哪个条件为真,并在同一个语句中输出结果数据,那将是理想的。
我认为开关是一种选择,但我还不太了解它们,但我认为这需要我根据此测试的结果做出决策方法,并将该结果发送给开关;这并不理想,因为我可以简单地有两个 if 语句和更少的代码。
有没有办法在一个语句中做到这一点?这个特定的程序没有必要,但我想知道未来。
谢谢!
【问题讨论】:
-
最直接的方法是使用两个
if语句。那样做。 (如果您希望显示两个消息框,而不是一个带有串联消息的消息框。)假设 C# 实际上支持直通,我不认为带有直通的开关可以做您想做的事情。 -
这就是我认为最终会发生的地方;我总是可以用两个 IF 语句对其进行测试,但是如果有/有什么方法可以使它成为一个结果可变的测试,我想知道!
-
@plast1K 您问题中的
if已经在执行两项测试,而不是一项。 (如果您查看生成的 IL,实际上它更接近四个测试。)
标签: c# if-statement minify