我有下一个对象(Tree structured Object):
public class someClass
{
ObservableCollection<someClass> Children { get; }
long NumOfSelectedChildren { get; set; }
}
//There is more properties but its not important for my question
我需要扫描给定的“someClass”对象并为每个节点设置属性NumOfSelectedChildrent他的孩子数。
我编写了一些执行此任务的递归但我必须将NumOfSelectedChildren属性作为参考发送。目前,当我的递归完成时,所有“NumOfSelectedChildren”属性都等于0,因为递归按值而不是通过引用移动参数。
当我试图将该属性作为“ref”发送时,我收到以下错误: “错误23属性,索引器或动态成员访问不能作为out或ref参数传递”
如何确保此属性将通过引用发送,而不是通过值发送?
感谢。
答案 0 :(得分:3)
您尚未显示更新NumOfSelectedChildren
属性的方式,因此,让我提出一个替代解决方案,不要求您通过引用传递属性:
public class someClass
{
ObservableCollection<someClass> Children { get; }
long NumOfSelectedChildren { get; set; }
int UpdateNumOfSelectedChildren()
{
return NumOfSelectedChildren =
Children.Sum(x => 1 + x.UpdateNumOfSelectedChildren());
}
}