构造函数中的递归
本文关键字:递归 构造函数 | 更新日期: 2023-09-27 18:18:24
请看下面的代码片段。我在"this.directories"处得到一个nullreferenceexception。添加(新目录(s));。递归似乎一直在工作,直到它"unwind",此时"new directory(s)"似乎为空。我不确定为什么它是这样表现的,我想可能有特殊的规则,因为递归是在构造函数中。请帮助。
namespace AnalyzeDir
{
class directory
{
public string[] files;
public ArrayList directories;
public string mypath;
public string myname;
public directory(string mp)
{
mypath = mp;
myname = mypath.Substring(mypath.LastIndexOf("''"));
files = Directory.GetFiles(mypath);
fillDirectoriesRescursive();
}
public void fillDirectoriesRescursive()
{
string[] dirpaths = Directory.GetDirectories(mypath);
if (dirpaths != null && (dirpaths.Length > 0))
{
foreach(string s in dirpaths)
{
this.directories.Add(new directory(s));
}
}
}
您还没有将directories
初始化为任何东西。
我建议不要在构造函数中这样做,而是将其移动到方法调用中。它又回到了"隐含行为",在这里你不应该在属性访问器中有大而复杂的外部系统逻辑。
你还使用了一个非常古老的结构,ArrayList
。我建议使用ICollection<directory>
代替。更多的类型安全,等等。
您还没有初始化directories