更改列表中的参考值

时间:2019-06-28 00:00:48

标签: c# reference

我正在从Entry列表中将Entry类型的对象传递给一个辅助函数,该函数接受对Entry对象的引用:

for(int i = 0; i < entries.Count; i ++)
{
     Entry singleEntry = entries[i];
     bool success = Helper(ref singleEntry);
}

在辅助函数中,创建了一个新的Entry对象,我希望entry [i]引用新对象而不是旧对象,但实际上只更改了singleEntry。我尝试执行以下操作:

for(int i = 0; i < entries.Count; i ++)
{     
     bool success = Helper(ref entries[i]);
}

但是我得到一个错误:“属性或索引器可能无法作为out或ref参数传递”。

我最终通过添加以下行来更改条目[i]:

for(int i = 0; i < entries.Count; i ++)
{
     Entry singleEntry = entries[i];
     bool success = Helper(ref singleEntry);

     entries[i] = singleEntry;
}

在列表中更改引用是否有更优雅的解决方案?

1 个答案:

答案 0 :(得分:0)

下面的代码部分是实现所需内容的最佳方法,也是最常用的方法。

 for(int i = 0; i < entries.Count; i ++)
 {
     Entry singleEntry = entries[i];
     bool success = Helper(ref singleEntry);
     entries[i] = singleEntry;
 }

您还可以使用c#(指针)的不安全部分,但是那样会很讨厌,皱着眉头,我可能会提到不安全。