提问人:RickBowden 提问时间:7/19/2015 最后编辑:marc_sRickBowden 更新时间:7/19/2015 访问量:69
在自定义对象上使用“查找”时出现空引用异常 [重复]
Null reference exception when using Find on custom object [duplicate]
问:
我在这里有点挠头。
我有一个自定义对象,我正在尝试搜索以一些文本开头的属性。
如果我使用而不是它搜索属性不会出错。==
StartsWith
这有效
Server serverObject = ServerObjectList.Find(n => n.Name == "Server001");
这给出了 null ref 异常
Server serverObject = ServerObjectList.Find(n => n.Name.StartsWith("Server001"));
奇怪的是,如果第一个对象是您要查找的对象,它就会起作用。
答:
0赞
Rakesh
7/19/2015
#1
“ServerObjectList”列表可能为空。起初,它可能正在计算 null == “”,这给出了 false。在第二个语句中,您正在对 null 调用 StartsWith 函数,这为您提供了 nullrefrenceException。检查列表是否已有数据。
注意:== 字符串的运算符重载。这可能是在返回 false 之前执行 null 检查。
评论
0赞
RickBowden
7/19/2015
是的,我已经检查过了,我的 ServerObjectList 充满了对象。
0赞
Rakesh
7/19/2015
好的,每个对象的 Name 属性是否不为空?
0赞
RickBowden
7/19/2015
是的,列表中的所有对象都有一个 name 属性。Non 为 null 或空。
0赞
RickBowden
7/19/2015
啊,我刚刚找到了一个没有名字的服务器。一开始没看到。
0赞
Rakesh
7/20/2015
是的,您可以更新代码以检查 null。
0赞
Deepak Bhatia
7/19/2015
#2
您应该这样做,因为 n 可能为 null 或 Name 可能为 null:
Server serverObject = ServerObjectList.Find(n => n!=null && n.Name!=null && n.Name.StartsWith("Server001"));
评论
0赞
RickBowden
7/19/2015
谢谢迪帕克。这绕过了我没有发现的空服务器名称。
0赞
Deepak Bhatia
7/19/2015
欢迎。我很高兴这有帮助。
评论