簡體   English   中英

在嘗試訪問對象之前檢查對象是否為null

[英]Checking for null on object before trying to access it

有沒有更好的書寫方式? 我不喜歡null檢查的方式

    editItem.FrameVent =fd.FirstOrDefault(x => x.hardwaretype == 39 
&& x.name.StartsWith("Frame Vent"))==null?null: fd.FirstOrDefault(x => x.hardwaretype == 39 
&& x.name.StartsWith("Frame Vent")).hardwareid;

我可以不用重復查詢位

將其重寫為:

editItem.FrameVent = fd.Where(x => x.hardwaretype == 39 && x.name.StartsWith("Frame Vent"))
                       .Select(p => p.hardwareid)
                       .FirstOrDefault();

您也可以使它更經典:

var result = fd.FirstOrDefault(x => x.hardwaretype == 39 && x.name.StartsWith("Frame Vent"));
editItem.FrameVent = result == null ? null : result.hardwareid;

您可以添加變量以簡化

var frameVent = fd.FirstOrDefault(x => x.hardwaretype == 39 && x.name.StartsWith("Frame Vent"));
editItem.FrameVent = frameVent==null ? null : frameVent.hardwareid;

只是一些額外的信息,而不是答案:

如果Microsoft確實按要求實施“安全導航操作員”('?。')( 按此處的要求 ),則解決方案將如下所示:

editItem.FrameVent =
    fd.FirstOrDefault(x => x.hardwaretype == 39 && x.name.StartsWith("Frame Vent"))
    ?.hardwareid;

引入這個新的運營商是否是一個好主意,尚有待商matter。 :)

暫無
暫無

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

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