C# 构造函数中的递归

C# 构造函数中的递归,c#,recursion,constructor,C#,Recursion,Constructor,请看下面的代码片段。我在“this.directories.Add(newdirectory));”处收到一个nullreferenceexception。递归似乎一直在工作,直到它“展开”,此时“新目录”似乎为空。我不确定它为什么会这样,我想可能有特殊的规则,因为递归在构造函数中。请帮忙 namespace AnalyzeDir { class directory { public string[] files; public ArrayList

请看下面的代码片段。我在“this.directories.Add(newdirectory));”处收到一个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));
                }
            }
        }

您尚未将
目录初始化为任何内容

我建议不要在构造函数中执行此操作,而是将其移动到方法调用。它回到了“隐含行为”,在这里,您不应该在属性访问器中有复杂的外部系统逻辑


您还使用了一个非常古老的构造,
ArrayList
。我建议改用
I收集
。更多的类型安全性和所有这些。

您根本没有初始化
目录。

这与问题无关,但供将来参考:通常以大写开头.NET类和方法名称,即
目录
FillDirectoriesRecursive
。非常感谢大家!尤其是对于djacobson和insta,它们也能纠正文体问题。我是新来的,但我已经感受到了爱!