【问题标题】:How to change an array element later?以后如何更改数组元素?
【发布时间】:2015-05-09 12:12:19
【问题描述】:

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

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

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

【问题讨论】:

  • 听起来像是 X-Y 问题。这是建议的解决方案的实际业务需求是什么?

标签: c# arrays object reference ref


【解决方案1】:

您可以使用委托来存储目的地(这也适用于任何其他类型/场景,包括“无法通过引用传递属性”的情况):

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 2021-04-14
    • 2021-09-21
    相关资源
    最近更新 更多