在审核了这个答案并给出了扩展方法之后:
public static bool IsIn<T>(this T source, params T[] list)
{
if(null == source) throw new ArgumentNullException("source");
return list.Contains(source);
}
What are your favorite extension methods for C#? (codeplex.com/extensionoverflow)
编写另一个检查变量是否不在列表中的扩展方法(例如if(x.IsNotIn(1,2,3))或者更好地否定第一个扩展方法(如如果(!x.IsIn(1,2,3))?
答案 0 :(得分:2)
我更喜欢否定积极的案例方法。为什么重写或剪贴板继承?
答案 1 :(得分:1)
它总是取决于您的用例。通常,您应该创建扩展方法,因为您发现自己使用它们,而不是为了扩展方法本身。如果你发现自己总是打字!Item.IsIn(List);你可能更喜欢写Item.IsNotIn(List);然后许多人会建议!Item.IsIn(List)更清晰(而且更短)。这确实是个人选择,取决于最适合您的问题领域。
答案 2 :(得分:1)
只需使用:if(!x.IsIn(1,2,3)) { do_stuff(); }
。 Contains
只是迭代数组,所以没有非常好的方法来优化它,因为这也是你必须要做的。