繁体   English   中英

C#3和4中扩展方法之间的差异

[英]Differences between extension methods in C#3 & 4

我想我记得很久以前就读过,在C#3扩展方法中,只能将方法应用于原始类型和接口。 在C#4中,它们可以用于扩展任何类型。 这与我现在所看到的并不一致,而且我发现很难找到此文档。

这有什么道理还是我的记忆弥补了一切?

与哪些类型可以扩展相关的规则是什么?

C#3和4之间有什么区别吗?

有没有道理呢?

没有。

与哪些类型可以扩展相关的规则是什么?

调用规则在C#4规范的7.6.5.2节中。 声明规则在10.6.9节中。

要回答您的特定问题:不能扩展非托管指针类型。

C#3和4之间有什么区别吗?

是。 C#4添加了处理“动态”的其他规则。 扩展方法不能动态解析; 如果你有

dynamic d = 10;
d.MyIntExtension();

那么动态语言运行时将无法在int上找到扩展方法。 看到

C#4中的dynamic关键字是否支持扩展方法?

更多细节。

你搞定了! 据我所知,C#3和C#4之间的规则没有任何变化。

(对相关规格文档的粗略比较似乎可以证实这一点。)

这有什么道理还是我的记忆弥补了一切?

你编好了 扩展方法始终在IEnumerable<T>


编辑:

这是Fx3.5(C#3)的MSDN链接 ,其中第二个示例是System.String的扩展,而String不是原始类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM