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();
我有以下代码行:
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();