首页 > 解决方案 > 增量运算符如何处理数组?

问题描述

这是让我感到困惑的代码:

var array = new int[5];
array[0] = 1;
array[0]++;
Console.WriteLine(array[0]);  //'2' is printed

我不明白为什么数组的项目会增加。据我了解,应该发生以下情况:

第一行:我创建了一个容量为 5 个整数的数组。

第 2 行:我将 '1' 放入该数组的 0 索引中

第三行:我从索引 0 检索项目并将其增加 1

第 4 行:我打印索引 0 处的项目

第三行是这里的关键。我不明白数字“2”是如何写入数组的。我只是在阅读该项目并增加它。

标签: c#arrays.netoperatorsincrement

解决方案


array[0]++;(大致)相当于array[0] += 1;

因此该值被写回数组位置。

这是一个副作用,需要注意一个顺序问题:

int y = array[0]++;       // now y == 1 and array[0] == 2

int y = (array[0] += 1);  // now y == 2 and array[0] == 2

推荐阅读