我在这里挠了一下头。
我有一个自定义对象,我试图搜索以某些文字开头的属性。
如果我使用==
而不是StartsWith
搜索属性,则不会出错。
这有效
Server serverObject = ServerObjectList.Find(n => n.Name == "Server001");
这给出了一个空引用异常
Server serverObject = ServerObjectList.Find(n => n.Name.StartsWith("Server001"));
奇怪的是,如果第一个对象是您要查找的对象,它就会起作用。
答案 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"));