我刚刚开始使用ReSharper,我试图找出它认为此代码错误的原因。
var file = new FileInfo("foobar");
return file.Directory.FullName;
它将file.Directory
强调为"可能的System.NullReferenceException"。我不确定这是怎么可能的,因为文件对象永远不能为空,我无法弄清楚DirectoryInfo
对象返回的FileInfo
对象如何为空。
答案 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。