"count ++"在C#中返回什么?

swi*_*tor 18 c#

刚碰到一些没有按我认为应该做的代码.其他人认为这应该返回1吗?有没有一个很好的解释为什么它不?

int count = 0;

count++.ToString(); // Returns 1 no?
Run Code Online (Sandbox Code Playgroud)

我一直以为count ++与count = count + 1相同......

Hei*_*nzi 46

x++是一个增量运算符.这意味着值x增加,但返回旧的(非递增的)值x(在您的情况下为0,应用于此ToString值).

要获得所需的行为,请使用增量运算符++x.

  • @Andrew:这个差异必须用纳秒来衡量.如果您的程序如此之快以至于几纳秒的差异是相关的,那么您可能不希望首先在抢先式多任务操作系统上使用垃圾收集语言. (11认同)
  • @Joan:我认为,如果你出于性能原因做某事,那么应该有一个衡量标准,证明代码更改会对客户产生重大影响.如果没有这样的测量,则根据性能以外的标准进行实施选择. (7认同)
  • @Eric加速肯定是非常小的,我只是把它看作是使用导致(我认为至少)预期行为的技术的一点点加.在特定情况之外我没有理由看到_not_使用预增量运算符.而我主要想的是C/C++ :) (2认同)

Eri*_*ert 17

至少到目前为止发布的答案中有四个是错误的.认为++运算符具有与C中相同的错误定义语义是一个非常常见的错误. 它没有.++运算符的语义是明确定义的,并且与这里的错误答案描述它们的方式完全不同.请参阅我上次回答此问题的答案:

i ++和++ i有什么区别?


Mar*_*ell 8

x ++是后增量; 当前值(0)用作结果,然后++发生.

有一点像:

var tmp = count;
count++;
Consle.WriteLine(tmp);
Run Code Online (Sandbox Code Playgroud)

预增量(++ x)将按预期运行.