【发布时间】:2012-04-19 07:55:33
【问题描述】:
我试图在reflector 中找到+=,以了解它们是如何实现的:
a=+1 与 a=a+1
但我找不到它。
有什么帮助吗?
【问题讨论】:
我试图在reflector 中找到+=,以了解它们是如何实现的:
a=+1 与 a=a+1
但我找不到它。
有什么帮助吗?
【问题讨论】:
+= 运算符在任何地方都没有实现,它是一个由编译器处理的伪运算符。 C# 编译器将a += 1 扩展为a = a + 1。
JIT 编译器然后创建最有效的代码来执行a = a + 1。如果它是一个简单的变量,它只是一个增加值的指令。
【讨论】:
a 变量读入寄存器,在循环期间将状态保存在寄存器中,然后将其写回变量循环。关闭开关后,每次迭代都会读取和写入该值。
如果您指的是int 的+= 和其他内置数字类型:将没有库函数可供查看。编译器可以直接将它们翻译成 IL 指令。
您可以尝试DateTime 结构,也可以尝试Decimal。
【讨论】:
+=,但它仍然可以工作。 decimal d = 1m; d += 1m; 工作正常。
Int32.Operator+