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);
Edit:
Если вы не хотите исключение (вы удалили эту часть из вашего вопроса), используйте вместо этого FirstOrDefault()
и проверьте для null
, как уже упоминал Виллем Дункан в своем комментарии.
+1 для интересного и элегантного решения. –
Используйте 'FirstOrDefault()' и проверьте «null», чтобы избежать исключения. –
@WillemDuncan: OP * хочет * исключение. –
Не так, как это можно читать. Вы могли бы извлечь этот код в свой собственный метод.
Кроме того, else
не требуется.
+1 для проверки реальности. : D –
Одна строка: Да. Удалите все новые строки, кроме последнего.
Одно простое заявление: Нет. Ваш код условно возвращается. Я сомневаюсь, что в C# есть одна простая команда, которая делает это.
Я не вижу никаких преимуществ в этом в одной строке, но в качестве альтернативы, может быть, вы могли бы сделать:
var files = new[] { "file.csv", "file.dbf" };
foreach (var file in files)
{
if (File.Exists(file))
{
return file;
}
}
Это один более расширяемой и не имеет никакого повторения строк.
Мне любопытно, что здесь внизу. –
-1 очень плохой ответ – Kira
^-1 очень плохой комментарий. –
Не могли бы вы перевести свое сообщение с действующим C#? Сломанный код трудно оптимизировать. –
Используйте оператор [':'] (http://en.wikipedia.org/wiki/%3F:#C.23)? Но помните, что только что-то на одной линии не делает ее более «оптимальной», а менее читаемой. –
@ebeeb: Вы говорите о недостающих точках с запятой? Не должно быть слишком сложно мысленно добавить их ... –