c# - 如果所有静态方法都是默认的扩展方法,会发生什么?

标签 c# .net extension-methods

静态方法总是应该用括号封装参数。所以在打字时使用扩展方法要容易得多。这就是我喜欢扩展方法的原因之一。

我不确定什么时候使用扩展或静态方法更好。我在想如果所有静态方法都是默认扩展方法会发生什么。扩展方法的输入很容易,但这个想法还有哪些其他优点或缺点?

编辑

在我意识到将所有静态方法都变成扩展方法并不是一个好主意之后。 例如:不带参数或带不同类型参数的方法。我们也可以改变问题。如果静态方法可以被默认用于静态方法的扩展方法使用,会发生什么情况?

最佳答案

虽然许多静态方法,特别是对于值类型和字符串,在它们自身的实例上运行,但有些静态方法的扩展语法没有意义,因为它们不作用于它们自己的类型。例如,ConfigurationManager 是一个没有实例组件的“纯静态”;尝试将任何此类调用构造为扩展方法是没有意义的。

我还遇到过这样的情况,即我在具有相似签名的不同实用程序库中引用了重复的扩展方法;引用包含该方法的静态类是无需大重构即可解决此类歧义的唯一方法。

最后,扩展方法要有节制。然而,我目前的项目可能变得有点太“流畅”了;我们有大多数字符串静态的扩展方法包装器,例如 IsNullOrEmpty() 和 Format(),以及每个值类型的解析扩展方法(int.Parse、byte.Parse、DateTime.Parse 等的包装器)和变体(例如 TryParses、IsNullOrBlank、IsNotNullOrEmpty 等)。您可以对字符串实例执行很多操作,在我们的项目中,大多数操作都可以附加到该实例的末尾(甚至是文字)。当您达到那个时期时,这会大大降低 VS 的速度,并增加其内存占用量(以及 ReSharper 的内存占用量,它提供 IntelliSense 扩展和使用/引用建议)。

关于c# - 如果所有静态方法都是默认的扩展方法,会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3614136/

相关文章:

c# - TryParse 其他类型

c# - 递归 IQueryable Linq 扩展方法

c# - 使用 msiexec 和 c# 安装 msi

c# - 分布式 key 生成是否有 GUID 替代方案?

Java网络服务

.net - 是否应该在生产应用程序中使用 MEF

c# - 扩展方法解决方案

c# - 无法加载程序集问题

c# - 如何暂停代码直到我想要? [类似于 Thread.Sleep(int);]

c# - 如何干燥这段代码