我正在将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;
}


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

最佳答案

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

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


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

07-28 02:13
查看更多