Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编写返回bool的扩展方法的更好实践?_C#_Extension Methods - Fatal编程技术网

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)。。。这是个更好的主意。