递归和变量值

时间:2012-07-14 10:31:40

标签: c# .net recursion

我有一个递归方法,简化如下:

private List<string> data;
public string Method1()
{
    data = new List<string>();

    //When Method 1 gets called first time there is a problem
    //When Method 1 gets called from Method2 problem is fixed
    if (problem)
    {
        data.Add("prob");
    }

    if(data.Count > 0)
    {
        return Method2()
    }
    else
    {
        return string.Empty();
    }
}

private string Method2()
{
    return Method1();
}

当从Method2调用Method1时,我正确地认为data变量已重新初始化,消除了之前的内容吗?

1 个答案:

答案 0 :(得分:0)

当您致电Method1时,您正在创建新的List<string>旧的data变量值变得无法访问(将被垃圾收集)。

为避免这种情况,您必须在data之外的某处初始化Method1,例如在构造函数中。