0

我有一个简化的递归方法:

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();
}

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

4

1 回答 1

0

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

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

于 2012-07-14T10:34:55.297 回答