FirstOrDefault中的空引用异常C#

jas*_*son 0 c# nullreferenceexception

我有这条线:

myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
Run Code Online (Sandbox Code Playgroud)

有时结果没有"Ada No",我得到了

你调用的对象是空的.

我编写了一个if语句来避免空引用异常:

if(result.FirstOrDefault(m => m.Name == "Ada No").Value != null)
{
   myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}
Run Code Online (Sandbox Code Playgroud)

但它也没有用.如何在这段代码中避免此异常?如果Ada No存在,工作,如果不工作,我怎么写?谢谢.

Far*_*yev 7

FirstOrDefault如果没有任何符合条件的对象,则返回null.当代码试图访问设置为null的引用类型变量的成员时,将抛出异常.因此,在访问对象之前,必须检查对象的值是否为null.

如果您使用的是C#6.0,则可以使用null-propagation运算符:

myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No")?.Value;
Run Code Online (Sandbox Code Playgroud)

或者如果您使用的是较低版本:

var firstObj = result.FirstOrDefault(m => m.Name == "Ada No");

if(firstObj != null)
{
    myobject.Ada = firstObj.Value;
}
Run Code Online (Sandbox Code Playgroud)