c# - 增量运算符如何处理数组?
问题描述
这是让我感到困惑的代码:
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”是如何写入数组的。我只是在阅读该项目并增加它。
解决方案
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
推荐阅读
- swift - 每个人都尝试过在 UITableViewController 中使用带有扩展选项的 Timer 吗?
- javascript - document.removeEventListener 在 useEffect 返回时不会触发
- firebase - Swiftui + Firestore - 无法访问 Firestore 中的字段
- javascript - 为什么不将我的使用 display:flex 的 React 组件对齐内容居中?
- docker - driver.close() 方法在 docker 容器中无法用于 selenium/node-firefox-debug 的最新映像
- python - PyTorch 将每个时期的预测保存为 CSV
- markdown - Doxygen 无法正确生成代码跨度或代码块
- bash - 在 bash 脚本中:如何向(人类)用户发出错误触发过早退出的信号?
- python - 如何在python中将频域转换为时域
- html - 带有文本和按钮的响应式标题