[英]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.