通过内置类型.net 2.0的反射来调用操作符

时间:2012-10-09 17:12:39

标签: c# reflection operators clr

所有

是否可以通过对.net 2.0中内置类型的反射来调用运算符(例如+,+)? 看来,你不能!当我尝试在int32上访问op_Increment时,未定义运算符。我读到内置类型的运算符由编译器处理,并且没有在实际类型上定义...请确认。

否则,还有另外一种方法吗?我知道C#的后续版本有动态关键字,我有哪些选择?

1 个答案:

答案 0 :(得分:1)

不,你不能。在内置类型(bool,byte,short,int,long,float,double)上,+++等操作映射到IL指令,并且没有相应的op_Increment方法,例如。

decimal允许你,即使它看起来像内置类型。 string是一个有趣的问题,因为对+的调用会映射到String.Concat及其变体。

看看这篇generic operators文章,它可能有所帮助(由Jon Skeet和Marc Gravell撰写)