C# +;=反射器中的操作员?

C# +;=反射器中的操作员?,c#,.net-4.0,reflector,C#,.net 4.0,Reflector,我试图在reflector中找到+=,看看它们是如何实现的: a=+1vsa=a+1 但是我找不到它 有什么帮助吗?如果您指的是int的+=和其他内置数字类型:将没有库函数可查看。编译器可以将它们直接转换为IL指令 您可以尝试DateTime结构,也可以尝试Decimal。任何地方都没有+=运算符的实现,它是由编译器处理的伪运算符。C编译器将a+=1扩展为a=a+1 然后,JIT编译器创建最有效的代码来执行a=a+1。如果它是一个简单的变量,它将只是一条增加值的指令。嗨,亨克,所有的基类型都不会

我试图在
reflector
中找到
+=
,看看它们是如何实现的:

a=+1
vs
a=a+1

但是我找不到它


有什么帮助吗?

如果您指的是
int
+=
和其他内置数字类型:将没有库函数可查看。编译器可以将它们直接转换为IL指令


您可以尝试
DateTime
结构,也可以尝试
Decimal

任何地方都没有
+=
运算符的实现,它是由编译器处理的伪运算符。C编译器将
a+=1
扩展为
a=a+1


然后,JIT编译器创建最有效的代码来执行
a=a+1
。如果它是一个简单的变量,它将只是一条增加值的指令。

嗨,亨克,所有的基类型都不会出现在reflector中(并由编译器直接翻译)?亨克不是datetime或decimal包含+=。@RoyiNamir,你不能在C#中重载
+=
,但它仍然可以工作<代码>十进制d=1m;d+=1m工作正常。“是否所有基类型都没有出现在reflector中”-不完全是,我认为您应该能够在某个地方找到Int32.ToString()。尽管它可能无法管理。但是不会有
Int32.Operator+
@RoyiNamir:可以,但是这种代码总是在某种程度上得到优化。优化代码开关更多地是关于操作之间的关系以及如何处理存储。例如,如果在循环中执行此操作,则在打开优化开关的情况下,代码可能会在循环之前将
变量读入寄存器,在循环期间将状态保留在寄存器中,并在循环之后将其写回变量。关闭该开关后,每次迭代都会读取和写入该值。