我有一个递归方法,简化如下:
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
变量已重新初始化,消除了之前的内容吗?
答案 0 :(得分:0)
当您致电Method1
时,您正在创建新的List<string>
旧的data
变量值变得无法访问(将被垃圾收集)。
为避免这种情况,您必须在data
之外的某处初始化Method1
,例如在构造函数中。