c# - C#中的单行递增和返回语句

标签 c# syntax increment

过去几天一直在使用 C# 并尝试利用其“简洁”语法,我尝试使用以下技巧。

Int32 _LastIndex = -1; 
T[] _Array;
_Array[_LastIndex++] = obj;

现在的问题是它在递增数字之前返回值,所以我尝试...

_Array[(_LastIndex++)] = obj;

但同样的行为正在发生(这也让我有点困惑)。

有人可以先解释为什么第二个例子(我明白为什么第一个)不起作用吗?有什么方法可以完成我想做的事情吗?

最佳答案

用圆括号包围后增量 _LastIndex++ 并没有将它分成一个不同的操作,它只是改变了:

_Array[_LastIndex++] = obj;    // _Array[_LastIndex] = obj; _LastIndex++;

进入:

_Array[(_LastIndex++)] = obj;  // _Array[(_LastIndex)] = obj; _LastIndex++;

如果想在使用前自增,需要pre-increment变体,如下:

_Array[++_LastIndex] = obj;    // ++_LastIndex; _Array[_LastIndex] = obj;

关于c# - C#中的单行递增和返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190195/

相关文章:

c# - 使用包含另一个对象数组的对象的反射读取属性

C# - 关键字用法 virtual+override 与 new

c# - 如何在 PagedList.Mvc 中拥有多个 PagedListRenderOptions?

c# - 注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\是否显示所有子项

Ruby:如何跨多行初始化数组

python - 为什么定义类时括号是可选的,而定义函数时是必须的?

mongodb - golang mongo-go-driver无法增加先前的nil值

sql - 自动增量/身份可以检测值本身吗?

MySql InnoDB 在事务中递增并返回一个字段

c# - Asp.Net Core 和脚手架