C#6中的条件为null

Mig*_*ura 10 c# c#-6.0

我有以下代码行:

Project = x.Project == null ? null : new Model { ... }
Run Code Online (Sandbox Code Playgroud)

在C#6中,有没有办法缩短这段代码?

我一直在看几个?例子但是对于这种情况我找不到更短的解决方案......

Sco*_*ain 10

原样你的代码尽可能短.但是,如果该类Project是基于public Model ToModel(...) { }你有一个方法,你可以做

Project = x.Project?.ToModel(...);
Run Code Online (Sandbox Code Playgroud)

更新:正如JonSkeet刚刚提到的,你也可以制作.ToModel(一个扩展方法.

public static class ExtensionMethods
{
    public static Model ToModel(this Project p, ...)
    {
        return new Model { ... };
    }
}
Run Code Online (Sandbox Code Playgroud)

语法仍然是

Project = x.Project?.ToModel(...);
Run Code Online (Sandbox Code Playgroud)