ReSharper "Возможное исключение NullReferenceException" неправильно с FileInfo? - PullRequest
8 голосов
/ 28 сентября 2011

Я только начал использовать ReSharper, и я пытаюсь определить, почему он считает, что этот код неправильный.

var file = new FileInfo("foobar");
return file.Directory.FullName;

Он выделяет file.Directory как «Возможное исключение System.NullReferenceException».Я не уверен, как это возможно, потому что файловый объект никогда не может быть нулевым, и я не могу понять, как объект DirectoryInfo, возвращаемый из объекта FileInfo, может быть нулевым.

Ответы [ 2 ]

12 голосов
/ 28 сентября 2011

Свойство Directory действительно может быть null. Реализация имущества примерно

public DirectoryInfo Directory {
    get {
        string directoryName = this.DirectoryName;
        if (directoryName == null) {
            return null;
        }
        return new DirectoryInfo(directoryName);
    }
}

Он точно может вернуть null. Вот конкретный пример

var x = new FileInfo(@"c:\");
if (x.Directory == null) {
  Console.WriteLine("Directory is null");  // Will print
}
0 голосов
/ 28 сентября 2011

Посмотрите на код. Каждая точка представляет сверление с другим объектом. Как вы сказали, «объект файла никогда не может быть нулевым» (правильно), какой другой объект может быть нулевым в этом уравнении. Подсказка: это не FullName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...