在自定义对象上使用“查找”时出现空引用异常

时间:2015-07-19 14:49:05

标签: c# .net object find nullreferenceexception

我在这里挠了一下头。

我有一个自定义对象,我试图搜索以某些文字开头的属性。

如果我使用==而不是StartsWith搜索属性,则不会出错。

这有效

Server serverObject = ServerObjectList.Find(n => n.Name == "Server001");

这给出了一个空引用异常

Server serverObject = ServerObjectList.Find(n => n.Name.StartsWith("Server001"));

奇怪的是,如果第一个对象是您要查找的对象,它就会起作用。

2 个答案:

答案 0 :(得分:0)

您的" ServerObjectList"列表可能是空的。起初它可能正在评估null ==""这给了假。在第二个语句中,您在null上调用StartsWith函数,这将为您提供nullrefrenceexception。检查列表是否已有数据。

注意:==运算符因字符串而重载。这可能在返回false之前进行空检查。

答案 1 :(得分:0)

你应该这样做,因为n可能为null或Name可能为null:

Server serverObject = ServerObjectList.Find(n => n!=null && n.Name!=null && n.Name.StartsWith("Server001"));