你好,
我经常使用关键字 Equals 来比较变量和其他内容。
但
wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();
当数据区域为 NULL 时在运行时返回错误
我不得不使用代码
wines = wines.Where(d => d.Region == paramRegion).ToList();
摆脱错误。
任何想法为什么会引发错误?
谢谢。
你好,
我经常使用关键字 Equals 来比较变量和其他内容。
但
wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();
当数据区域为 NULL 时在运行时返回错误
我不得不使用代码
wines = wines.Where(d => d.Region == paramRegion).ToList();
摆脱错误。
任何想法为什么会引发错误?
谢谢。
您不能调用具有空对象引用的实例方法。在调用其实例方法之前,您应该检查 Region 不为空。
wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();
在调用 Equals() 方法之前,d.Region == paramRegion
它(最有可能)扩展为object.Equals(d.Region, paramRegion)
并且该静态方法确实检查参数是否为空。
如果您知道paramRegion
不能为空,您也可以按不同的顺序编写条件。
Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();
基本上如果
d.Region == null
然后任何方法调用,这里的Equals(...)都会引发异常,因为它没有被初始化。
使用可以使用:
paramRegion.Equals(d.Region)