我正在从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;
}
在列表中更改引用是否有更优雅的解决方案?
答案 0 :(得分:0)
下面的代码部分是实现所需内容的最佳方法,也是最常用的方法。
for(int i = 0; i < entries.Count; i ++)
{
Entry singleEntry = entries[i];
bool success = Helper(ref singleEntry);
entries[i] = singleEntry;
}
您还可以使用c#(指针)的不安全部分,但是那样会很讨厌,皱着眉头,我可能会提到不安全。