【发布时间】:2011-11-20 16:15:47
【问题描述】:
我看到使用 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 进行评估时会引发异常。
有什么想法吗?
感谢您对此的任何见解。
谢谢
【问题讨论】:
-
我确定这与
var关键字或user变量无关。 -
你确定这是你得到异常的地方吗?您是否检查过以确保用户和/或实例不为空?此外,您应该可以这样做:
if (GWUsers.Instance.Users.FirstOrDefault(u => u.EmailAddress == emailAddress) != null) //... -
堆栈跟踪会告诉你问题出在哪里。此外,您可以将
Where替换为FirstOrDefault,而不是在最后添加。 -
真棒@CharithJ,当我真正想要.Any() 时,我刚刚使用完一堆FirstOrDefault() 方法。只是更改了我自己的代码。 ;o)