【发布时间】:2013-08-06 05:42:05
【问题描述】:
我有这样的函数(foo):我需要比较输入字符串并相应地执行任务。 任务是相同的,但仅适用于一组选定的值。对于所有其他值什么都不做。
function foo(string x)
{
if(x == "abc")
//do Task1
if(x == "efg")
//do Task1
if(x == "hij")
//do Task1
if(x == "lmn")
//do Task1
}
除此之外还有其他方法可以进行检查吗?还是将OR 运算符放在if 中?
首选的方式是什么?
【问题讨论】:
-
switch语句非常适合这种情况;它允许您编写目标值,并很好地分离并使用最少的不必要的样板。 -
switch 语句在这里并没有太大的不同。
-
有些人偏爱
if (new[] {"abc", "efg", "hij", "lmn"}.Contains(x)) { Task1(); }...我不确定,但它有效。 -
@anaximander 好一个。但有趣的是
string[]实际上并没有包含方法Contains,所以这只是因为Linq。并不是说那是个问题。纯数组解决方案是if (Array.IndexOf(new[] {"abc", "efg", "hij", "lmn"}, x) != -1) { ... },但这看起来很糟糕。 -
您只是在寻找一些不错的内联语法吗?如果是这样,您始终可以创建一个扩展方法,为您提供
if(x.Is("abc", "efg", "hij", "lmn")) { }之类的语法