C# 4.0: .NET Framework 4 中的新 C# 功能
2010-09-30 22:47:01 来源:WEB开发网在 C# 4.0 中,dynamic 是一种内置类型,用一个伪关键字标出。但是请注意,这种 dynamic 与 var 不同。用 var 声明的变量实际上具有强类型,不过程序员将其留给编译器判断罢了。当程序员使用 dynamic 时,编译器不知道要使用的类型,程序员将这种判断留给运行时决定。
动态和 DLR
在运行时支持这些动态操作的基础结构称为动态语言运行时 (DLR)。这个新的 .NET Framework 4 库与其他任何托管库一样运行于 CLR 之上。它负责在启动动态操作的语言与实际发生动态操作的对象之间协调每个动态操作。如果动态操作不是由实际发生动态操作的对象处理的,C# 编译器的运行时组件将会处理绑定。简单但不完整的体系结构图如图 1 所示。
图 1 DLR 运行于 CLR 之上
关于动态操作(例如动态方法调用)有一件有趣的事,即接收对象在运行时有机会将其本身注入到绑定中,从而能够完全决定任何给定动态操作的语义。例如,让我们看一看以下代码:
dynamic d = new MyDynamicObject();
d.Bar("Baz", 3, d);
如果 MyDynamicObject 的定义如下所示,您可以想象一下会发生什么:
class MyDynamicObject : DynamicObject {
public override bool TryInvokeMember(
InvokeMemberBinder binder,
object[] args, out object result) {
Console.WriteLine("Method: {0}", binder.Name);
foreach (var arg in args) {
Console.WriteLine("Argument: {0}", arg);
}
result = args[0];
return true;
}
}
- ››功能强更实用 Win7库变为“计算机”
- ››功能最全!网管必备子网划分计算工具!
- ››Netpas加速 让非电信宽带用户流畅上网
- ››net中fckediter的图片上传时候点击\浏览服务器\出...
- ››Netmsg局域网聊天程序
- ››NetAirus指控苹果iPhone侵犯其专利
- ››Netflix 在线影视播放程序将登陆 iPhone
- ››Net中各种不同的对象创建方式的速度差异
- ››NetNewsWire 功能简单 界面快速 Reader 浏览器
- ››功能完整的 Google Reader 离线浏览器 Byline 介绍...
- ››NET-使用Js调用WebService
- ››Net 应用程序如何在32位操作系统下申请超过2G的内...
更多精彩
赞助商链接