如何在以后更改数组元素?

时间:2015-03-08 05:18:46

标签: c# arrays object reference ref

我跟踪一个我想稍后改变的节点对象(到另一种类型,然后重新分配它)。它来自我后来无法访问的数组元素。

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

我目前的解决方法是跟踪元素所属的数组以及对象所处的索引但是有两个变量只是为了做到这一点似乎有些混乱。当然有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用委托来存储目的地(此工作也适用于任何其他类型/方案,包括"无法通过引用传递属性"案例):

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];就足够了。