C# 6 中的 null 条件

Condition with null in C# 6

我有以下代码行:

Project = x.Project == null ? null : new Model { ... }

在 C# 6 中有什么方法可以缩短这段代码吗?

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

不,它尽可能短。

然而,基于这段代码,你实际上应该在它上面有一个 if 条件来检查 x

的值
if(x != null)
    Project = x.Project == null ? null : new Model { ... }
else
    Project = null;

您可以将其更改为:

Project = x?.Project == null ? null : new Model { ... }

您的代码尽可能短。但是,如果 class Project 基于 public Model ToModel(...) { } 方法,您可以执行

Project = x.Project?.ToModel(...);

更新:与 一样,您还可以将 .ToModel( 设为扩展方法。

public static class ExtensionMethods
{
    public static Model ToModel(this Project p, ...)
    {
        return new Model { ... };
    }
}

语法仍然是

Project = x.Project?.ToModel(...);

不是更短,而是使用 Linq 的替代解决方案:

Model m = new Project[] { x.Project }
       .Where(p => p != null)
       .Select(p => new Model { ... })
       .FirstOrDefault();