设置数字属性以按引用移动 - C#

时间:2013-02-10 07:40:57

标签: c# recursion reference

我有下一个对象(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参数传递”

如何确保此属性将通过引用发送,而不是通过值发送?

感谢。

1 个答案:

答案 0 :(得分:3)

您尚未显示更新NumOfSelectedChildren属性的方式,因此,让我提出一个替代解决方案,不要求您通过引用传递属性:

public class someClass
{
    ObservableCollection<someClass> Children { get; }

    long NumOfSelectedChildren { get; set; }

    int UpdateNumOfSelectedChildren()
    {
       return NumOfSelectedChildren =
           Children.Sum(x => 1 + x.UpdateNumOfSelectedChildren());
    }
}