[英]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#3和C#4之间的规则没有任何变化。
(对相关规格文档的粗略比较似乎可以证实这一点。)
这有什么道理还是我的记忆弥补了一切?
你编好了 扩展方法始终在IEnumerable<T>
。
这是Fx3.5(C#3)的MSDN链接 ,其中第二个示例是System.String的扩展,而String不是原始类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.