1

我有下一个对象(树结构对象):

public class someClass
{

ObservableCollection<someClass> Children { get; }
long NumOfSelectedChildren { get; set; }
}

//There is more properties but its not important for my question

我需要扫描给定的“someClass”对象并将每个节点设置到属性 NumOfSelectedChildren 中他的孩子的数量。

我写了一些递归来完成这项任务,但我必须发送 NumOfSelectedChildren 属性作为参考。目前,当我的递归完成时,所有“NumOfSelectedChildren”属性都等于 0,因为递归通过值而不是通过引用移动参数。

当我尝试将属性作为“ref”发送时,我收到以下错误:“错误 23 属性、索引器或动态成员访问可能不会作为 out 或 ref 参数传递”

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

谢谢。

4

1 回答 1

3

您还没有展示如何更新NumOfSelectedChildren属性,所以让我提出一个不需要您通过引用传递属性的替代解决方案:

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

    long NumOfSelectedChildren { get; set; }

    int UpdateNumOfSelectedChildren()
    {
       return NumOfSelectedChildren =
           Children.Sum(x => 1 + x.UpdateNumOfSelectedChildren());
    }
}
于 2013-02-10T07:45:21.493 回答