以后如何更改数组元素?

How to change an array element later?

我正在跟踪我想稍后更改的节点对象(更改为不同的类型并因此重新分配它)。它来自我以后无法访问的数组元素。

我不能只跟踪对象并重新分配它,因为那样只会重新分配变量,而不是作为数组一部分的实际对象。我基本上是在寻找类似 ref 的语义,但没有使用方法。

我当前的解决方法只是跟踪元素所属的数组和对象所在的索引,但仅使用两个变量来执行此操作似乎有些混乱。肯定有更好的方法吗?

您可以使用委托来存储目的地(这也适用于任何其他 types/scenarios,包括 "can't pass property by reference" 情况):

var captureIndex = index; 
var captureArray = array;
Action<string> updateItLaterWith = v => captureArray[captureIndex] = v;

// ....And when finally decided to update 
updateItLaterWith("Done!!!");

示例显示防止捕获错误值(即,如果 index 稍后更改,但在调用委托之前),您可能不需要这样的复杂性,v => array[index]; 就足够了。