在 linq 上选择之前检查 null

Sim*_*mon 2 .net c# linq

我刚刚安装了 ReSharper,它已经改变了

if(dto != null)
{
    return new test{
     obj1 = "",
     obj2 = "",
 }
}
Run Code Online (Sandbox Code Playgroud)

进入

 return dto?.Select(item => new test
      {
    return new test{
     obj1 = "",
     obj2 = "",
 }
Run Code Online (Sandbox Code Playgroud)

我以前没见过

dto?.Select
Run Code Online (Sandbox Code Playgroud)

试图在没有运气的情况下用谷歌搜索含义..有人可以解释一下,或者为我指出正确的方向

我收集它只是检查空值?

Dev*_*per 5

C# 6 中新引入了空传播运算符。 return dto?.Select... 表示,如果 dto 为空,则此语句将返回空,否则将执行剩余部分。再举一个例子,假设你有一个带有 Address 属性的 Employee 对象,它又包含 Lane(字符串)、Pincode 等。所以如果你需要获取地址通道值,你可以这样做:

var lane = employee?.Address?.Lane;
Run Code Online (Sandbox Code Playgroud)

如果员工或地址为空,则返回空值;否则返回车道值。

这可以通过多种方式组合,并且非常方便。例如,

int someIntegerValue = someObject?.SomeIntValue ?? 0;
Run Code Online (Sandbox Code Playgroud)

基本上,您可以使用此功能避免许多空检查。