c# - 扩展方法的缺点?

标签 c# extension-methods

扩展方法是一个非常有用的功能,您可以在任何类中添加很多您想要的功能。但我想知道是否有任何缺点可能会给我带来麻烦。有什么意见或建议吗?

最佳答案

  • 扩展方法的导入方式(即一次导入整个命名空间)并不精确。您无法从 namespace 导入一个扩展而没有得到所有其余的扩展。
  • 从源代码中定义该方法的位置并不明显。这也是一个优势 - 它意味着您可以使您的代码看起来与该类型的其余方法保持一致,即使您出于某种原因不能将它们放在同一位置。换句话说,代码在较高层次上更容易理解,但就确切正在执行的内容而言更复杂。我认为 LINQ 通常也是如此。
  • 您只能有扩展方法,不能有属性、索引器、运算符、构造函数等。
  • 如果您正在扩展第 3 方类,并且在更高版本中他们引入了具有相同签名的新方法,您将不会轻易知道调用代码的含义已更改。如果新方法与您的扩展非常相似,但边界条件(或其他)略有不同,那么这可能会导致一些非常棘手的错误。不过这种情况发生的可能性相对较小。

关于c# - 扩展方法的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/312184/

相关文章:

c# - 在 C# 中做替换标签的更好方法?

c# - Visual Studio 2013发布失败报 "non-existing"错误

c# - Dictionary<T> 的 SingleOrDefault 集合版本是什么?

c# - 选择 IEnumerable<T> 的下 N 个元素

generics - 如何为泛型类型编写扩展方法,其中一个类型变量必须是字符串?

c# - NRules:在具有自定义基类的规则上使用 DSL 扩展的问题

c# - 从列表中选择<T>

c# - 项目 visual studio 2010 中的文件列表

c# - 将大量物理文件名写入文本文件 c#

c# - ProtoInclude 属性是什么意思(在 protobuf-net 中)