5

我不想说:

(trsaz != v1) && (trsaz != v2) && ...

我想要类似的东西:

trsaz != (v1, v4, v7, v11)

这是可能的还是除此之外还有别的东西!=

4

4 回答 4

12
var badList = new[] { v1, v4, v7, v11 };
var result = !badList.Contains(trsaz);
于 2011-06-01T01:33:33.613 回答
2
var excludeList = new[] { "v1", "v4", "v7", "v11" };
if(!excludeList.Contains(trsaz))
{
    ...
}
于 2011-06-01T01:34:53.883 回答
0

实际上,我更喜欢为此创建一个小扩展方法:

public static bool IsIn<T>(this T obj, params T[] set) {
    return set.Any(el => element.Equals(obj));        
}

它封装了所有的黑魔法,让你的代码非常简洁,这是你的目标,显然:

if (!trsaz.IsIn(v1, v4, v7, v11)) {
    // ...
}

如果机制不重要,隐藏机制总是好的,尤其是在这种情况下,根本不需要使用任何机制,并且会让一些维护代码的人感到困惑。

于 2011-06-01T03:25:33.560 回答
0
var result = (new[] {v1, v4, v7}).Every(o => o != trsaz);
于 2011-06-23T16:39:29.330 回答