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

Buh*_*ica 1 c# extension-methods versions c#-4.0

我想我记得在很久以前读过C#3扩展方法只能应用于原始类型和接口; 而在C#4中,它们可用于扩展任何类型.这不符合我现在看到的情况,我发现很难找到这个记录.

这有什么道理,还是我的记忆能够完成?

有哪些类型可以扩展的规则是什么?

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

Eri*_*ert 6

有没有道理呢?

没有.

有哪些类型可以扩展的规则是什么?

调用规则见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上找到扩展方法.看到

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

更多细节.