Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 简化的,如果有的话_C# - Fatal编程技术网

C# 简化的,如果有的话

C# 简化的,如果有的话,c#,C#,我可以用一行来简化这个表达式吗?不是以一种仍然可读的方式。 但是,您可以将该代码提取到它自己的方法中 此外,不需要else。如果没有匹配的文件,您愿意接受无效操作异常: if (File.Exists(file.csv)) { return file.csv; } else if (File.Exists(file.dbf)) { return file.dbf; } 编辑: 如果您不希望出现异常(您从问题中删除了该部分),请改用并检查null,正如威廉·邓肯(Willem Dun

我可以用一行来简化这个表达式吗?

不是以一种仍然可读的方式。 但是,您可以将该代码提取到它自己的方法中


此外,不需要
else

如果没有匹配的文件,您愿意接受
无效操作异常

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


如果您不希望出现异常(您从问题中删除了该部分),请改用并检查
null
,正如威廉·邓肯(Willem Duncan)在其评论中已经提到的那样

一行:是的。删除除最后一行以外的所有换行


一个简单的语句:否。您的代码有条件地返回。我怀疑C#中是否有一个简单的命令可以做到这一点。

我认为在一行中执行此操作没有任何好处,但作为替代方法,也许您可以执行以下操作:

return new[]{file.csv, file.dbf}.First(File.Exists);

这篇文章更具可扩展性,没有重复的字符串。

您能用有效的C重新编辑您的文章吗?破译的代码很难优化。是否使用运算符?但是请记住,仅仅因为某个内容在一行上并不能使它更“最优”,只是可读性较差。File.Exist()不存在。它应该是File.Exists()@Azhar Khorasany:它“不存在”。。。如果没有's':-D,我的第一个意图是尝试理解OP试图实现什么,而不是将两行可怕的代码更改为一行可怕的代码。File.Exists()是邪恶的,不要使用它。使用
FirstOrDefault()
并检查
null
以避开异常。@WillemDuncan:OP想要一个异常。@DanielHilgarth:似乎OP删除了整个
else
案例,而不是else关键字和大括号,就像你在回答时所说的那样?@ebebebe:确实如此。我不知道他同时删除了它。实际上我喜欢这个答案,因为它的可扩展性。但是,是的,用户1765862希望所有这些都在一行中。@Hedinaliy:那是胡说八道。执行
if
的次数与执行原始代码的次数相同。如果
file.csv
存在,代码将执行
return
语句:One
If
executed。如果
file.csv
不存在,但是
file.dbf
会执行两个
如果将执行
s,就像在原始代码中一样。@DanielHilgarth,那么这个答案不会提供最简单的代码;)别忘了循环statement@HediNaily:显然,这个答案并不是一句话就能解决的。不需要任何评论就能看到这一点。但是它提供了一个没有重复代码的代码,虽然它不是一行,但答案也不错。我可能会做的唯一不同的事情是使用隐式推断数组,比如
var files=new[]{file.csv,file.dbf}
,而不是使用
列表
,因为我认为它更具可读性,而且您实际上不关心集合的类型,因为您只需迭代一次。
var files = new[] { "file.csv", "file.dbf" };
foreach (var file in files)
{
    if (File.Exists(file))     
    {      
        return file;
    }       
}