Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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# 扩展方法的使用_C#_.net - Fatal编程技术网

C# 扩展方法的使用

C# 扩展方法的使用,c#,.net,C#,.net,我使用C#扩展方法已经有一段时间了,我发现它们非常方便。然而,我并不确定使用它们最理想的情况是什么,我觉得有时我会滥用它们。您什么时候会推荐使用扩展方法?IMO,如果它实际上是一个扩展(而不是核心/关键操作),或者是一个快捷方式 扩展示例: 通常在沙盒应用程序中(当然也可以在实际应用程序中使用)使用Print方法扩展IEnumerable print方法不应该存在(也就是说:它不应该是IEnumerable类的一部分),但它有助于并使语法更简单、更清晰。此外,您可能不希望将库作为该类的一部分提供

我使用C#扩展方法已经有一段时间了,我发现它们非常方便。然而,我并不确定使用它们最理想的情况是什么,我觉得有时我会滥用它们。您什么时候会推荐使用扩展方法?

IMO,如果它实际上是一个扩展(而不是核心/关键操作),或者是一个快捷方式

扩展示例:

通常在沙盒应用程序中(当然也可以在实际应用程序中使用)使用
Print
方法扩展
IEnumerable

print方法不应该存在(也就是说:它不应该是
IEnumerable
类的一部分),但它有助于并使语法更简单、更清晰。此外,您可能不希望将库作为该类的一部分提供

快捷方式示例:

我发现自己经常创建的另一件事是带有容器的对象的辅助扩展。我没有调用
Items.Add
和类似的方法,而是创建了一个
AddItem
扩展方法


需要考虑的是,它只是句法糖,也就是说,对你——开发者来说。因此,对于.NET类型和其他类型,当您认为这是一个好主意并且会使事情变得更干净时,请使用它


当涉及到“此方法是扩展还是成员?”时,请参阅此答案中的第一句话,并查看&以获取更多信息。

我认为扩展方法是不添加到类行为中的一个位置,因为根据定义,扩展方法只能在类本身上使用公共字段/属性/方法。