ReSharper "Possible NullReferenceException" wrong

本文关键字:quot wrong NullReferenceException Possible ReSharper | 更新日期: 2023-09-27 18:10:01

我刚刚开始使用ReSharper,我试图确定为什么它认为这段代码是错误的。

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

它突出显示file.Directory为"可能的System.NullReferenceException"。我不确定这是如何可能的,因为文件对象永远不能为空,我无法弄清楚DirectoryInfo对象如何从FileInfo对象返回可能是空的。

ReSharper "Possible NullReferenceException" wrong

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
}