编写返回bool的扩展方法的更好实践?

时间:2011-08-10 15:28:40

标签: c# extension-methods

在审核了这个答案并给出了扩展方法之后:

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))?

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只是迭代数组,所以没有非常好的方法来优化它,因为这也是你必须要做的。