Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FirstOrDefault C中存在Null引用异常#_C#_Nullreferenceexception - Fatal编程技术网

C# FirstOrDefault C中存在Null引用异常#

C# FirstOrDefault C中存在Null引用异常#,c#,nullreferenceexception,C#,Nullreferenceexception,我有一句话: myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value; 有时结果并没有“Ada No”,而我得到 对象引用未设置为对象的实例 我编写了一个if语句来避免空引用异常: if(result.FirstOrDefault(m => m.Name == "Ada No").Value != null) { myobject.Ada = result.FirstOrDefault(m =&g

我有一句话:

myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
有时结果并没有“Ada No”,而我得到

对象引用未设置为对象的实例

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

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

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

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

如果使用的是C#6.0,则可以使用null传播运算符:

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

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

if(firstObj != null)
{
    myobject.Ada = firstObj.Value;
}

另一种解决方案是检查是否存在由名称等于“Ada No”的成员

请注意,
结果
也不是空值

但是空传播方式不太容易编写,因此它取决于您的偏好,您希望如何读取代码,以及它是否是性能关键的代码

if(result != null && result.Any(m => m.Name == "Ada No"))
{
    myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}

我不认为FirstOrDefault是引发NullReferenceException的。我认为结果是空的。
if(result != null && result.Any(m => m.Name == "Ada No"))
{
    myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}