我刚刚安装了ReSharper,它已经改变了
if(dto != null)
{
return new test{
obj1 = "",
obj2 = "",
}
}
到
return dto?.Select(item => new test
{
return new test{
obj1 = "",
obj2 = "",
}
我以前没见过
dto?.Select
尝试谷歌的意思没有运气..有人可以请解释,或指出我正确的方向去除
我收集它只是检查null?
答案 0 :(得分:3)
在C#6中新引入了Null传播运算符。返回dto?.Select ...表示,如果dto为null,则此语句将返回null,否则将执行剩余部分。 另一个例子,只是弥补它,假设你有一个带有Address属性的Employee对象,其中inturn有Lane(字符串),Pincode等。 因此,如果您需要获取地址通道值,您可以这样做:
var lane = employee?.Address?.Lane;
如果员工或地址为空,则返回null;否则返回车道值。
这可以通过多种方式结合起来,非常方便。 例如,
int someIntegerValue = someObject?.SomeIntValue ?? 0;
基本上,您可以使用此功能避免许多空检查。
答案 1 :(得分:1)
问号运算符作用于可空值和
x?<operation>
转换为
x.HasValue ? x.Value.<operation> : null
它基本上是说&#34;如果我不是空的话,那就去做;否则让我为null&#34;。
你有
吗?return null
后面的原始代码声明?我很惊讶ReSharper会在转换中假设返回null。