0
private void anotherMethod()
{
    DirectoryInfo d = new DirectoryInfo("D\\:");
    string s = included(d);
     ... // do something with s
}

private string included(DirectoryInfo dir)
{
    if (dir != null)
    {
        if (included(dir.FullName))
        {
            return "Full";
        }
        else if (dir.Parent != null) // ERROR
        {
            if (included(dir.Parent.FullName))
            {
                return "Full";
            }
        }
        ...
    }
    ...
}

上記のコードは私が使用しているものですが、機能しません。エラーがスローされます:

オブジェクト参照がオブジェクト インスタンスに設定されていません

dir.FullPath は B:\ であるため、親はありませんが、なぜ dir.Parent != null でエラーが発生するのですか?

特定のディレクトリに親ディレクトリが存在するかどうかを確認するにはどうすればよいですか?

「含まれる」メソッドが 2 つあることに注意してください。

  • 含まれる(string s)
  • 含まれる (DirectoryInfo dir)

この目的のために、included(string s) が false を返すと想定できます。

4

3 に答える 3

1

修理:else if (dir != null && dir.Parent != null)

于 2011-09-01T13:47:50.407 に答える
1
    public static bool ParentDirectoryExists(string dir)
    {
        DirectoryInfo dirInfo = Directory.GetParent(dir);
        if ((dirInfo != null) && dirInfo.Exists)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
于 2011-09-01T14:01:20.710 に答える
0

これによると、dir.Parent を null に対してチェックできるはずです。

親ディレクトリ、またはパスが null の場合、またはファイル パスがルート ("\"、"C:"、* "\server\share" など) を示す場合は null 参照 (Visual Basic では Nothing)。

問題は、他の人がすでに指摘したように、null 参照 (dir) でメソッドにアクセスしていることです。

ソース

于 2011-09-01T13:49:11.313 に答える