【问题标题】:var item throwing exception when tested against nullvar 项目在针对 null 进行测试时抛出异常
【发布时间】: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)

标签: c# exception


【解决方案1】:

很可能有以下原因:

  • GWUsers.Instance.Users 为空
  • 列表中的一个实例为空

【讨论】:

    【解决方案2】:

    如果用户中的用户元素为空,您可以将 LINQ 语句修改为以下内容:

    GWUsers.Instance.Users.Where(u => u != null && u.EmailAddress == u.mailAddress).FirstOrDefault();`
    

    但是,Users 为 null 无济于事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      相关资源
      最近更新 更多