C# 更改列表中的引用值
我正在将Entry类型的对象从条目列表传递到助手函数中,该函数接受对条目对象的引用: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
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谢谢您让我知道。我据此编辑了我的答案。