扩展方法是一个非常有用的功能,您可以在任何类中添加很多您想要的功能。但我想知道是否有任何缺点可能会给我带来麻烦。有什么意见或建议吗?
最佳答案
- 扩展方法的导入方式(即一次导入整个命名空间)并不精确。您无法从 namespace 导入一个扩展而没有得到所有其余的扩展。
- 从源代码中定义该方法的位置并不明显。这也是一个优势 - 它意味着您可以使您的代码看起来与该类型的其余方法保持一致,即使您出于某种原因不能将它们放在同一位置。换句话说,代码在较高层次上更容易理解,但就确切正在执行的内容而言更复杂。我认为 LINQ 通常也是如此。
- 您只能有扩展方法,不能有属性、索引器、运算符、构造函数等。
- 如果您正在扩展第 3 方类,并且在更高版本中他们引入了具有相同签名的新方法,您将不会轻易知道调用代码的含义已更改。如果新方法与您的扩展非常相似,但边界条件(或其他)略有不同,那么这可能会导致一些非常棘手的错误。不过这种情况发生的可能性相对较小。
关于c# - 扩展方法的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/312184/