Buh*_*ica 1 c# extension-methods versions c#-4.0
我想我记得在很久以前读过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();
Run Code Online (Sandbox Code Playgroud)
那么动态语言运行库将无法在int上找到扩展方法.看到
更多细节.