簡體   English   中英

在linq上選擇之前檢查是否為空

[英]Check for null before select on linq

我剛剛安裝了ReSharper,並且它已更改

if(dto != null)
{
    return new test{
     obj1 = "",
     obj2 = "",
 }
}

進入

 return dto?.Select(item => new test
      {
    return new test{
     obj1 = "",
     obj2 = "",
 }

我沒見過

dto?.Select

試圖谷歌的意思沒有運氣..有人可以解釋一下,或指向正確的方向

我收集它只是檢查null嗎?

空傳播運算符是C#6中新引入的。return dto?.Select ...表示,如果dto為null,則此語句將返回null,否則將執行其余部分。 再舉一個例子,假設您擁有具有Address屬性的Employee對象,而該對象又具有Lane(字符串),Pincode等。因此,如果需要獲取地址Lane值,可以執行以下操作:

var lane = employee?.Address?.Lane;

如果雇員或地址為null,則返回null;否則返回null。 否則返回通道值。

這可以通過多種方式組合在一起,並且非常方便。 例如

int someIntegerValue = someObject?.SomeIntValue ?? 0;

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

問號運算符作用於可為空的值,並且

x?<operation>

轉換為

x.HasValue ? x.Value.<operation> : null

基本上是說“如果我不為null,請執行此操作;否則請保持為null”。

你有沒有

return null

稍后在您的原始代碼中聲明? 我很驚訝ReSharper會假設其轉換為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM