C# 编写返回bool的扩展方法的更好实践?
在回顾此答案并给出扩展方法后:C# 编写返回bool的扩展方法的更好实践?,c#,extension-methods,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); } public static bool IsIn(此T源,参数T[]列表) { 如果(null==source)抛出新的Argum
public static bool IsIn<T>(this T source, params T[] list)
{
if(null == source) throw new ArgumentNullException("source");
return list.Contains(source);
}
public static bool IsIn(此T源,参数T[]列表)
{
如果(null==source)抛出新的ArgumentNullException(“source”);
返回列表。包含(来源);
}
是否最好编写另一个扩展方法来检查变量是否不在列表中,例如if(x.IsNotIn(1,2,3)),还是干脆否定第一个扩展方法,例如if(!x.IsIn(1,2,3))?我更喜欢否定正格方法。为什么要重写或剪贴板继承?我更喜欢否定正格方法。为什么要重写或剪贴板继承?它始终取决于您的用例。通常,您应该创建扩展方法,因为您发现自己正在使用它们,而不是为了扩展方法本身。如果你发现自己总是打字!项目1.IsIn(清单);您可能更喜欢写Item.IsNotIn(列表);然后,许多人会再次建议!IsIn(列表)更清晰(而且更短)。这确实是个人的选择,取决于什么最适合您的问题领域。它始终取决于您的用例。通常,您应该创建扩展方法,因为您发现自己正在使用它们,而不是为了扩展方法本身。如果你发现自己总是打字!项目1.IsIn(清单);您可能更喜欢写Item.IsNotIn(列表);然后,许多人会再次建议!IsIn(列表)更清晰(而且更短)。这确实是个人的选择,取决于什么最适合你的问题领域。只要使用:
如果(!x.IsIn(1,2,3)){do_stuff()}
包含
只是在数组上迭代,因此没有非常好的方法来优化它,因为这也是您必须要做的。只要使用:如果(!x.IsIn(1,2,3)){do_stuff();}
包含
只是在数组上迭代,因此没有非常好的方法来优化它,因为这也是您必须要做的。对于codereview来说可能是一个更好的问题。Sew您将在ISNotIn
方法中添加什么<代码>!包含?@Bolu,是。这就是我为什么这么想的原因!IsIn(1,2,3)。。。是一个更好的主意。对于codereview可能是一个更好的问题。您将在ISNotIn
方法中添加什么<代码>!包含?@Bolu,是。这就是我为什么这么想的原因!IsIn(1,2,3)。。。这是个更好的主意。