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

Max*_*ich 4 c# syntax increment

在最近几天一直在玩C#并尝试利用其"简洁"的语法,我试图使用以下技巧.

Int32 _LastIndex = -1; 
T[] _Array;
_Array[_LastIndex++] = obj;
Run Code Online (Sandbox Code Playgroud)

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

_Array[(_LastIndex++)] = obj;
Run Code Online (Sandbox Code Playgroud)

然而同样的行为正在发生(这也让我有点困惑).

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

pax*_*blo 5

_LastIndex++用括号围绕后增量不会将其分成不同的操作,它只是改变:

_Array[_LastIndex++] = obj;    // _Array[_LastIndex] = obj; _LastIndex++;
Run Code Online (Sandbox Code Playgroud)

成:

_Array[(_LastIndex++)] = obj;  // _Array[(_LastIndex)] = obj; _LastIndex++;
Run Code Online (Sandbox Code Playgroud)

如果要在使用前增加,则需要预增量变量,如下所示:

_Array[++_LastIndex] = obj;    // ++_LastIndex; _Array[_LastIndex] = obj;
Run Code Online (Sandbox Code Playgroud)