dmi*_*mil 4 c# recursion constructor
请查看以下代码段.我在"this.directories.Add(new directory(s));"中遇到了nullreferenceexception.递归似乎一直有效,直到它"解开",此时"新目录"似乎是空的.我不确定它为什么会这样表现,我想也许有特殊的规则,因为递归是在构造函数中.请帮忙.
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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
你没有初始化directories为任何东西.
我建议不要在构造函数中执行此操作,而是将其移至方法调用.它可以追溯到"隐含行为",你不应该在属性访问器内部有大的复杂的外部系统逻辑.
你也使用了一个非常古老的结构ArrayList.我建议ICollection<directory>改用.更多类型安全和所有这些.
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |