我怎么说不是,不是

问题描述

我不想说:
(trsaz != v1) && (trsaz != v2) && ...
我想要类似的东西:
trsaz != (v1,v4,v7,v11)
除了ѭ2or之外,这是否可能?     

解决方法

        
var badList = new[] { v1,v4,v7,v11 };
var result = !badList.Contains(trsaz);
    ,        
var excludeList = new[] { \"v1\",\"v4\",\"v7\",\"v11\" };
if(!excludeList.Contains(trsaz))
{
    ...
}
    ,        实际上,我更喜欢为此创建一个扩展方法:
public static bool IsIn<T>(this T obj,params T[] set) {
    return set.Any(el => element.Equals(obj));        
}
它封装了所有的黑魔法,并使您的代码真正简洁,这显然是您的目标:
if (!trsaz.IsIn(v1,v11)) {
    // ...
}
如果该机制不重要,则最好将其隐藏起来,尤其是在这种情况下,根本不需要使用任何机制,这会使一些维护您代码的人感到困惑。     ,        
var result = (new[] {v1,v7}).Every(o => o != trsaz);