我看到一些使用C#.NET
对var类型测试null值的奇怪行为以下是一些示例代码。
// locate user in cache
var user = GWUsers.Instance.Users.Where(u => u.EmailAddress == emailAddress).FirstOrDefault();
if (user != null)
{
}
当用户包含空值时,将抛出异常,指示“未设置对象引用”。
GWUsers是一个单例,用于存放存储在XML文件中的用户列表。在整个应用程序中使用了同样的代码,但是在这个实例中,它在针对null进行求值时会抛出异常。
为什么会有这样的想法?
欣赏对此的任何见解。
由于
答案 0 :(得分:5)
很可能是以下原因:
答案 1 :(得分:1)
对于Users中的null用户元素,您可以将LINQ语句修改为以下内容:
GWUsers.Instance.Users.Where(u => u != null && u.EmailAddress == u.mailAddress).FirstOrDefault();`
然而,Users
为空无效。