ReSharper“可能的NullReferenceException”错误的FileInfo?

时间:2011-09-28 14:43:11

标签: c# .net resharper

我刚刚开始使用ReSharper,我试图找出它认为此代码错误的原因。

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

它将file.Directory强调为"可能的System.NullReferenceException"。我不确定这是怎么可能的,因为文件对象永远不能为空,我无法弄清楚DirectoryInfo对象返回的FileInfo对象如何为空。

2 个答案:

答案 0 :(得分:12)

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
}

答案 1 :(得分:0)

看看代码。每个点代表钻到另一个对象。正如您所说“文件对象永远不能为空”(正确),在此等式中其他对象可能为null。提示:它不是FullName。