FirstOrDefault C# 中的空引用异常
Null Reference exception in FirstOrDefault C#
我有这条线:
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
有时结果没有 "Ada No" 而我得到
Object reference not set to an instance of an object.
我写了一个 if 语句来避免空引用异常:
if(result.FirstOrDefault(m => m.Name == "Ada No").Value != null)
{
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}
但是也没用。我怎样才能在这段代码中避免这个异常?如果 Ada No 存在,我怎么写,如果不存在,则不工作?谢谢
如果没有满足条件的对象,FirstOrDefault
将returnnull。当代码试图访问设置为 null 的引用类型变量的成员时,将抛出异常。因此,您必须在访问对象之前检查该对象的值是否为空。
如果您使用的是 C# 6.0,则可以使用空值传播运算符:
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;
}
另一种解决方案是检查 Any 是否存在由 Name 等于 "Ada No"
组成的任何成员
请注意 result
也不为空!
但是 null 传播方式会比较难写,所以这取决于你的偏好,你想如何阅读你的代码,以及它是否是一些性能关键的代码
if(result != null && result.Any(m => m.Name == "Ada No"))
{
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}
我有这条线:
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
有时结果没有 "Ada No" 而我得到
Object reference not set to an instance of an object.
我写了一个 if 语句来避免空引用异常:
if(result.FirstOrDefault(m => m.Name == "Ada No").Value != null)
{
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}
但是也没用。我怎样才能在这段代码中避免这个异常?如果 Ada No 存在,我怎么写,如果不存在,则不工作?谢谢
FirstOrDefault
将returnnull。当代码试图访问设置为 null 的引用类型变量的成员时,将抛出异常。因此,您必须在访问对象之前检查该对象的值是否为空。
如果您使用的是 C# 6.0,则可以使用空值传播运算符:
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;
}
另一种解决方案是检查 Any 是否存在由 Name 等于 "Ada No"
组成的任何成员请注意 result
也不为空!
但是 null 传播方式会比较难写,所以这取决于你的偏好,你想如何阅读你的代码,以及它是否是一些性能关键的代码
if(result != null && result.Any(m => m.Name == "Ada No"))
{
myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}