C# 更改列表中的引用值

C# 更改列表中的引用值,c#,reference,C#,Reference,我正在将Entry类型的对象从条目列表传递到助手函数中,该函数接受对条目对象的引用: for(int i = 0; i < entries.Count; i ++) { Entry singleEntry = entries[i]; bool success = Helper(ref singleEntry); } for(int i=0;i

我正在将Entry类型的对象从条目列表传递到助手函数中,该函数接受对条目对象的引用:

for(int i = 0; i < entries.Count; i ++)
{
     Entry singleEntry = entries[i];
     bool success = Helper(ref singleEntry);
}
for(int i=0;i
在helper函数中,创建了一个新的Entry对象,我希望entries[I]引用新对象而不是旧对象,但实际上只更改了singleEntry。我试着做到以下几点:

for(int i = 0; i < entries.Count; i ++)
{     
     bool success = Helper(ref entries[i]);
}
for(int i=0;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

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

下面的代码部分是实现您想要的内容的最佳和最普遍接受的方法

 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

你也可以使用c#(指针)中不安全的部分,但那将是非常令人讨厌的,非常不受欢迎,我可以提到不安全

您的解决方案(在第三个代码示例中)是正确的,请保持这样。追求优雅是好的,但您的代码在使用命名模糊的方法(
Helper
??)时做了奇怪的事情,我更担心的是我的代码的可读性/可维护性,而不是它的优雅。我绝对同意它应该首先可读。我的示例只是一个修改过的、更简单的用于询问目的的实际代码版本。OP说他们的助手方法创建了一个新的
条目
,而不是更新字段/属性。因此,将其更改为具有
element=newentry()在您更改
s
之前,您会发现这不起作用。@juharr谢谢您让我知道。我据此编辑了我的答案。