扩展方法是一个非常有用的功能,您可以在任何类中添加所需的许多功能.但我想知道是否有任何不利因素可能给我带来麻烦.有什么意见或建议吗?
导入扩展方法的方式(即一次整个命名空间)并不精细.您无法从命名空间导入一个扩展而不会获得所有其他扩展.
从定义方法的源代码中不是很明显.这也是一个优点 - 它意味着您可以使代码看起来与类型上的其他方法一致,即使您因任何原因无法将它放在同一个地方.换句话说,代码在高级别上更容易理解,但在准确执行的内容方面更复杂.我认为一般来说LINQ也是如此.
您只能拥有扩展方法,而不是属性,索引器,运算符,构造函数等.
如果您正在扩展第三方类,并且在更高版本中它们引入了具有相同签名的新方法,您将不会轻易知道您的调用代码的含义已经改变.如果新方法与您的扩展非常相似,但具有微妙不同的边界条件(或其他),那么这可能会导致一些非常棘手的错误.但这种情况相对不太可能发生.