【发布时间】:2013-10-01 22:47:18
【问题描述】:
有人能解释一下下面的代码是如何工作的吗?
static int index = 0;
public static int GetNextIndex()
{
return index++;
}
我假设,由于递增操作发生在 return 语句之后,变量“index”永远不会递增。
但在使用 C# 编译器进行测试时,我观察到“索引”正在增加。
标准编译器如何处理这种情况?
【问题讨论】:
-
是什么让您认为增量发生在 return 语句之后?在获取到 index 的值后进行递增,供在return语句中使用...
-
因为是后缀运算符。
-
@Fadi 阅读 Eric Lippert 的这个答案,解释前/后缀 stackoverflow.com/a/3346729/860585 的机制
-
我通过调用函数进行了测试。在初始调用期间,输出为 0。这让我认为,增量操作发生在 return 语句之后。
-
看看@Rotem 提供的链接(快几秒^^)。这是关于
++的确切前缀/后缀版本如何工作的非常深度答案。