Условие с нулевым значением в С# 6
У меня есть следующая строка кода:
Project = x.Project == null ? null : new Model { ... }
Есть ли способ в С# 6 сделать код короче?
Я смотрел на несколько? примеры, но для этого случая я не могу найти более короткое решение...
Ответы
Ответ 1
As-ваш код как можно короче. Однако, если класс Project
основан на методе public Model ToModel(...) { }
, который вы могли бы сделать
Project = x.Project?.ToModel(...);
UPDATE: как только что упомянутый JonSkeet, вы также можете сделать .ToModel(
метод расширения.
public static class ExtensionMethods
{
public static Model ToModel(this Project p, ...)
{
return new Model { ... };
}
}
Синтаксис по-прежнему будет
Project = x.Project?.ToModel(...);
Ответ 2
Нет, это так коротко, как вы можете это сделать.
Однако на основе этого кода вы должны иметь условие if выше, чтобы проверить значение x
if(x != null)
Project = x.Project == null ? null : new Model { ... }
else
Project = null;
Вы можете изменить это на:
Project = x?.Project == null ? null : new Model { ... }
Ответ 3
Не короче, но альтернативное решение с использованием Linq:
Model m = new Project[] { x.Project }
.Where(p => p != null)
.Select(p => new Model { ... })
.FirstOrDefault();