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;
}