简化如果否则

时间:2013-04-03 12:47:56

标签: c#

if (File.Exists(file.csv))
{
   return file.csv;
}
else if (File.Exists(file.dbf))
{
   return file.dbf;
}

我可以使用一行简化此表达式吗?

4 个答案:

答案 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#中有一个简单的命令可以做到这一点。