c# - 您发现了扩展方法的哪些优势?

标签 c# extension-methods

<分区>

C# 的“非信徒”问我扩展方法的目的是什么。我解释说,您随后可以向已定义的对象添加新方法,尤其是当您不拥有/控制原始对象的源代码时。

他提出“为什么不直接在你自己的类中添加一个方法呢?”我们一直在兜兜转转(以一种好的方式)。我的一般 react 是它是工具带中的另一个工具,而他的 react 是这是对工具的无用浪费……但我认为我会得到一个更“开明”的答案。

在哪些情况下您使用了扩展方法,而您不能(或不应该)使用添加到您自己的类中的方法?

最佳答案

扩展方法唯一的优势是代码的可读性。就是这样。

扩展方法允许您这样做:

foo.bar();

而不是这个:

Util.bar(foo);

现在C#里面有很多这样的东西。换句话说,C# 中有许多看似微不足道的功能,它们本身并没有太大的好处。然而,一旦您开始将这些功能组合在一起,您就会开始看到比其各个部分的总和更大的东西。 LINQ 从扩展方法中受益匪浅,因为如果没有扩展方法,LINQ 查询几乎不可读。如果没有扩展方法,LINQ 将可能,但不实用。

扩展方法很像 C# 的分部类。它们本身并不是很有帮助,而且看起来微不足道。但是当您开始使用需要生成代码的类时,部分类开始变得更有意义。

关于c# - 您发现了扩展方法的哪些优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/487904/

相关文章:

c# - 在 OOP 中覆盖方法与分配方法委托(delegate)/事件

c# - 如何在 C# WPF 中的 MS 访问数据库中存储来自 2 个不同表的数据的数据库中创建表

c# - 使用 C# 修改子字符串

c# - LINQ 选择实体并将其转换为 ViewModel

c# - 通用扩展

c# - 扩展方法与助手类

c# - 扩展方法是如何工作的?

c# - 在单独的线程上引发事件

linq to sql OnLoaded() 与 SQL View ?

Ajax.ActionLink 没有 href 属性以获得更好的 SEO