我一直使用for (int i = 0; i < 10; i++)
在C#中编写for
循环。在C#中使用`x + = 1`而不是`++ x`是否有任何副作用?
我一直在阅读关于JavaScript(JavaScript:The Good Parts)的最佳实践,其中之一是更喜欢x += 1
而不是x++
。
有没有什么区别,在C#之间,两者之间在性能,原子性和功能性等方面。
我问,因为有功能在C#++x
和x++
之间的差异(和C++,可能大多数其他基于C语言);前者是预先增加它在哪里增量变量然后返回值,后者是后增加它返回的值,然后增加它(实际上,这两个细微的差异是什么激怒我的兴趣采用在我的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的理解还不足以回答“这有什么区别”的问题。
你能回答自己这个问题:看IL。 –
它只是C#中的一个语法结构,编译器生成的MSIL是相同的。 –
在C#中,你不应该想到副作用发生时前和后增量之间的差异。在两种情况下评估操作员时都会产生副作用。 [所不同的是在增量或之后返回哪个值。](http://stackoverflow.com/a/3346729/517852) –