1
11
它允许您在不编辑原始代码的情况下为现有代码库创建新功能。 http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx “扩展方法允许开发人员将新方法添加到现有clr类型的公共契约中,而无需对其进行子类化或重新编译原始类型。扩展方法有助于将当今动态语言中流行的“duck-typing”支持的灵活性与强类型语言的性能和编译时验证结合起来。 扩展方法支持各种有用的场景,并有助于实现真正强大的LINQ查询框架,该框架作为“orcas”版本的一部分与.NET一起引入。 |
2
3
它们存在的主要原因是能够在不继承类型的情况下,以某种方式向类型添加特性。
这是需要提供的
|
3
2
它通过后门提供多重继承。 它支持C++等语言,它支持从多个类继承,不需要扩展方法。然而,多重继承有很多问题,所以现代语言已经放弃了它。然而,扩展方法是一种用例,其中多个继承是有用的。不过,C设计人员没有重新引入多重继承,而是创建了扩展方法(这是解决问题的一个非常好的解决方案)。 |
4
1
我们经常会为自己编写一些有用的小实用工具静态类,这些类在类型上执行一个公共函数。我知道有很多次我希望可以简单地继承一个类来添加一个特性,但是这个类是密封的。我很高兴,虽然他们是密封的,毫无根据的继承是一件坏事。 扩展方法允许这些静态方法看起来像是该类型的新实例方法,从而使代码看起来更直观。
它们还具有不污染类型的实际成员命名空间的优点,并允许您通过
|
5
0
扩展方法的存在很可能是由于Microsoft需要将功能添加到
改变的选择
为了实现两者的最佳效果,C编译器团队增加了对扩展方法的支持,允许创建
|
Tooleh · 只有第一行上的按钮在表中起作用 7 年前 |
Ahmad · 如何使用C#在unity中避免列表中的重复值 7 年前 |
IPS · 如何知道类型结构属性的偏移值? 7 年前 |
Shakeel Hussain Mir · 阻止刷新锚点标记单击 7 年前 |
Nag Arjun Reddy · 如何在循环中使用集合 7 年前 |