if (File.Exists(file.csv))
{
return file.csv;
}
else if (File.Exists(file.dbf))
{
return file.dbf;
}
我可以用一行来简化这个表达式吗?
if (File.Exists(file.csv))
{
return file.csv;
}
else if (File.Exists(file.dbf))
{
return file.dbf;
}
我可以用一行来简化这个表达式吗?
如果您愿意接受InvalidOperationException
如果不存在匹配的文件:
return new[]{file.csv, file.dbf}.First(File.Exists);
编辑:
如果您不想要异常(您从问题中删除了该部分),FirstOrDefault()
请改用并检查null
,正如威廉邓肯在他的评论中已经提到的那样。
不是以仍然可读的方式。但是,您可以将该代码提取到它自己的方法中。
此外,else
不需要。
我认为在一行中这样做没有任何优势,但作为替代方案,也许你可以这样做:
var files = new[] { "file.csv", "file.dbf" };
foreach (var file in files)
{
if (File.Exists(file))
{
return file;
}
}
这个扩展性更强,没有重复的字符串。
一行:是的。删除除最后一个以外的所有换行符。
一个简单的陈述:不。您的代码有条件地返回。我怀疑 C# 中有一个简单的命令可以做到这一点。