读经典——《CLR via C#》(Jeffrey Richter著) 笔记_dynamic基元类型
2015-05-15 16:36
204 查看
1、代码使用 dynamic 表达式/变量来调用一个成员时,编译器会生成特殊的 IL 代码来描述所需的操作。这种特殊的代码称为 payload(有效载荷)。在运行时,payload 代码根据当前由 dynamic 表达式/变量引用的对象的实际类型来决定具体执行的操作。
【例子】
【分析】
这个方法的参数类型声明为了 dynamic。在方法内部,实参被作为二元+操作符的两个操作数使用。由于 arg 是 dynamic ,所以C# 编译器会生成 payload 代码,以便在运行时检查 arg 的实际类型,并决定+操作符实际要做的事情。
【例子】
private static dynamic Plus(dynamic arg) { return arg + arg;}
【分析】
这个方法的参数类型声明为了 dynamic。在方法内部,实参被作为二元+操作符的两个操作数使用。由于 arg 是 dynamic ,所以C# 编译器会生成 payload 代码,以便在运行时检查 arg 的实际类型,并决定+操作符实际要做的事情。
相关文章推荐
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_引用类型和值类型(一)
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_.Net Framework 部署目标(一)
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_类型转换
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(一)
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(二)
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_方法执行
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(三)
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_.Net Framework 部署目标
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_CLR
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_对象的相等性和同一性
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_命名空间和程序集的关系
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_友元程序集
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_值类型的装箱和拆箱(一)
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_元数据
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_运行时解析类型引用
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_高级管理控制(配置)
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_发布者策略控制
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_值类型的装箱和拆箱(二)