我总是使用for
在C#中编写for (int i = 0; i < 10; i++)
个循环。
我一直在阅读JavaScript的最佳做法(JavaScript:好的部分),其中一个是x += 1
优先于x++
。
在性能,原子性和功能等方面,两者之间是否有任何差异,在C#中。
我问,因为在C#(和C ++以及可能是大多数其他基于C的语言)中++x
和x++
之间存在功能差异 ;前者是预增量,它增加变量然后返回值,后者是后增量,它返回值,然后递增它(实际上,这两个微妙的差异引起了我对在我的C#代码中采用x += 1
策略的兴趣。
更新:
以下两种方法,method1
使用++x
而method2
使用x += 1
:
static void method1()
{
int x = 1;
int y = ++x;
Console.WriteLine(x);
Console.WriteLine(y);
}
static void method2()
{
int x = 1;
int y = x += 1;
Console.WriteLine(x);
Console.WriteLine(y);
}
这产生以下IL:
方法1 :
方法2 :
似乎存在一些细微差别,但我对IL的理解还不足以回答“是否有任何差异”的问题。
答案 0 :(得分:3)
完全没有区别。从x += 1
和x++
翻译的中间语言完全相同:
int x = 0;
x++; // or x += 1;
IL代码是:
IL_0001: ldc.i4.0
IL_0002: stloc.0 // x
IL_0003: ldloc.0 // x
IL_0004: ldc.i4.1
IL_0005: add
IL_0006: stloc.0 // x