我应该在C#中使用哪种递增方法? ++ i或i ++?

时间:2013-09-25 10:42:32

标签: c# loops increment

E.g。

for (int i = 0; i < 10; ++i) 
...

vs

  

for(int i = 0; i&lt; 10; i ++)...

我被告知++我会更有效率。是否存在其他语言(如JavaScript)的差异,还是更基本的规则?

4 个答案:

答案 0 :(得分:4)

i ++和++ i之间的差异是表达式的值。

值i ++是增量前的i值。 ++ i的值是增量后的i的值。

然而,在你的循环中,它没有任何区别。

int i = 0;
00000088  xor         edx,edx 
0000008a  mov         dword ptr [ebp-40h],edx 
            i++;
0000008d  inc         dword ptr [ebp-40h] 
            ++i;
00000090  inc         dword ptr [ebp-40h] 

答案 1 :(得分:2)

for(int i=0;i<10;i++)
{
 //some jobs
}

与:

相同
int i=0;
while(i<10)
{
 //some jobs
   i++;
}

for(int i=0;i<10;i++)
{
 //some jobs
}

等于:

int i=0;
while(i<10)
{
 //some jobs
   ++i;
}

所以没有区别,性能会相同

i ++是postincrementation,++ i是preincrementation,因此在其他情况下存在差异,但性能不同。您可以在此处阅读有关前后增量的更多信息C# Pre- & Post Increment confusions

答案 2 :(得分:0)

在某些语言中使用++ i的优点是它不会不必要地创建一个临时的(参见例如Exceptional C ++以获得对C ++的全面解释)。

答案 3 :(得分:0)

如果您没有在同一个表达式中分配结果,则

++i在C#中的效率不比i++高。为这两种情况生成相同的代码。

当然,如果将结果分配给同一表达式中的某些内容,与生成的代码区别开来 - 但在那种情况下,语义是不同的,你没有选择使用哪种增量形式。

因此,请使用您最喜欢的。