c# FirstOrDefault中的空引用异常
本文关键字:引用 异常 FirstOrDefault | 更新日期: 2023-09-27 18:16:05
我有这样一行:
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
有时结果没有"Ada No",我得到
对象引用未设置为对象的实例。
我写了一个if语句来避免null引用异常:
if(result.FirstOrDefault(m => m.Name == "Ada No").Value != null)
{
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}
但它也没有工作。如何在这段代码中避免此异常?如果Ada No存在,我怎么写,如果不存在,我怎么写?谢谢。
FirstOrDefault
将返回null,如果没有任何对象满足条件。当代码试图访问被设置为null的引用类型变量的成员时,将抛出异常。因此,在访问该对象之前,必须检查该对象的值是否为null。
如果你使用c# 6.0,你可以使用null传播运算符:
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No")?.Value;
或者如果您使用较低版本:
var firstObj = result.FirstOrDefault(m => m.Name == "Ada No");
if(firstObj != null)
{
myobject.Ada = firstObj.Value;
}
如果存在由Name =" Ada No"组成的成员,则使用Any进行检查
注意result
也不是空的!
但是null传播方式会更少写,所以这取决于你的偏好,你想如何阅读你的代码,如果它是一些性能关键的代码
if(result != null && result.Any(m => m.Name == "Ada No"))
{
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}