如何将多个操作数应用于单个运算符?
一个例子:
而不是
if (foo == "dog" || foo == "cat" || foo == "human")
我可以拥有以下或类似的内容:
if (foo == ("dog" || "cat" || "human"));
答案 0 :(得分:9)
您的第一个版本已在一个表达式中包含多个运算符。听起来你想将多个操作数(“dog”,“cat”,“human”)应用于单个运算符(在这种情况下为==
)
对于您可以使用的具体示例:
// Note: could extract this array (or make it a set etc) and reuse the same
// collection each time we evaluate this.
if (new[] { "dog", "cat", "human" }.Contains(foo))
但是对于所有运营商来说,没有通用的一刀切版本。
编辑:正如评论中所述,上述内容的效果不如硬编码版本。
答案 1 :(得分:1)
可以这样做:
List<string> values = new List<string> {"dog", "cat", "human"};
values.Any(s=>s.Equals(foo ));
但在我看来,你编写的代码已经比任何其他解决方案更具可读性。 如果我们不是在这里谈论可能的几十种选择,自然。
答案 2 :(得分:1)
使用开关案例
switch(foo)
{
case "dog":
case "cat":
case "human":
//Your Code
break;
}
答案 3 :(得分:0)
您可以随时尝试,编译并亲眼看看:)
("dog" || "cat" || "human")
对于C#
来说不是一个有意义的表达也许你可以将它们放在一个数组中并循环遍历它们。
或者更好的是,将它们放在一个数组中,然后提出一个很酷的lambda表达式。