在自定义对象上使用Find时,Null引用异常

本文关键字:Null 引用 异常 Find 自定义 对象 | 更新日期: 2023-09-27 18:03:39

我有点挠头了

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

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

这是

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

给出一个null ref异常

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

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

在自定义对象上使用Find时,Null引用异常

你应该这样做,因为n可能是空的,或者Name可能是空的:

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

您的"ServerObjectList"列表可能为空。首先,它可能计算null == ",结果为false。在第二个语句中,您在null上调用StartsWith函数,这会给您nullreferceexception。检查列表是否已经有数据

注意:==操作符对于字符串是重载的。这可能是在返回false之前进行null检查。