我有一个返回FileInfo
- 对象的方法。调用方法fooFile.FullName
后调用。
一切都很好,但有一种情况FileInfo
可以是null
,但我不想(丑陋)空检查调用方法的位置。
我需要的是某种null-FileInfo(Null-Object-Pattern)。调用fooFile.FullName
返回空字符串就足够了。
遗憾的是new FileInfo(string.Empty)
不起作用。
搜索SO会带来java-question,但答案对我没有帮助。
有没有办法将FileInfo
与Null-Object-Pattern结合使用?
答案 0 :(得分:4)
你可以使用??
运算符在需要的地方使用默认的FileInfo
,静态变量代表什么是默认的fileinfo:
public void MyMethod(FileInfo fi)
{
// use default fileinfo if null is passed to this method
fi = fi ?? DefaultFileInfo.Value;
// method code...
// do something with the fileinfo, it is not null for sure now.
}
默认文件信息类:
public static class DefaultFileInfo
{
public static readonly FileInfo Value = new FileInfo("null");
}
如果您要使默认文件可读,那么您当然需要指定一个有效的文件名。
答案 1 :(得分:3)
空检查的问题是什么?我不明白你的意思...... 如果您确实想要避免这种空检查,您可以使用扩展方法,但我不能建议您这样做...
public static class Extensions
{
public static string GetFullName(this FileInfo fInfo)
{
if (fInfo == null)
{
return String.Empty;
}
return fInfo.FullName;
}
}
然后
FileInfo fInfo = // ... ;
string fullName = fInfo.GetFullName();