Fantacy
人工智能,智能运营,智能客服,企业知识管理系统(Kmaster,SuperKM)

System.Decimal 类型是个特殊的类型,他并不直接属于CLR IL的基本类型,而是C#语言自己定义的。(其他值类型比如System.Int32都有对应的IL类型int32)

因此可以通过Reflector查看关于操作符重载和转换操作符的方法

1. 操作符重载

Code

 

2. 转化操作符

Code

 

3. 实际上,上述操作符重载方法最终将编译成普通IL方法。

c#编译器在源码中看到一个+号时,会去查看是否定义了一个op_Addition的方法(对应+操作符)并检查参数类型是否兼容。

而对于隐式转化,将分别编译成op_Implicit的不同重载方法(overload)

显式转化编译成op_Explicit的不同重载方法,而且是C#不支持但CLR支持的同名同参数不同返回值类型方法。

 

Code

 

 

posted on 2008-11-11 16:42  calmzeal  阅读(639)  评论(0编辑  收藏  举报