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