arr [0] ++和++ arr [0]之间的区别

时间:2010-10-19 12:29:12

标签: c# arrays post-increment pre-increment

在C#中,代码之间是否存在差异(一个声明中的所有声明,而不是较大声明的一部分)arr[0]++;++arr[0];

我完全理解,在C / C ++ / Objective-C中,这不会做同样的事情,第一种情况是在arr的第0个索引处得到值并将该值递增1,而第二个,增加arr的指针值,并且不对它的第0个位置做任何事情(与arr[1]; arr++;相同)。

感谢某事,他提醒我在C#和C / C ++ / Obj-C中也是如此。

但是,C#中的两个语句之间是否存在差异?

4 个答案:

答案 0 :(得分:11)

arr[0]++返回arr的第一个元素的值,然后递增它。

++arr[0]递增arr的第一个元素的值,然后返回它

如果您将此作为较长指令的一部分使用,则差异才有意义。例如:

arr[0] = 42;
int x = arr[0]++; // x is now 42, arr[0] is now 43

不一样:

arr[0] = 42;
int x = ++arr[0]; // x is now 43, arr[0] is now 43

答案 1 :(得分:1)

如果是单一陈述,则没有区别。

答案 2 :(得分:1)

++ x递增然后返回,而x ++返回x的值然后递增! 但如果没有人接受这个价值,那就完全相同了。

答案 3 :(得分:0)

优化编译器应该生成相同的代码,如果该语句本身存在,但是当您使用的是您正在修改内联的值时,后增量可能需要复制(因此您可以使用旧值) ,如果数组的类型具有昂贵的复制构造函数,则可能会很昂贵。