如何将多个操作数应用于单个运算符?

时间:2012-04-27 10:18:49

标签: c# operators

如何将多个操作数应用于单个运算符?

一个例子:

而不是

if (foo == "dog" || foo == "cat" || foo == "human")

我可以拥有以下或类似的内容:

if (foo == ("dog" || "cat" || "human"));

4 个答案:

答案 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表达式。