【问题标题】:IndexOutOfRangeException occured due to an if condition由于 if 条件而发生 IndexOutOfRangeException
【发布时间】:2014-06-28 04:50:06
【问题描述】:

IndexOutOfRangeException 刚刚在我正在构建的一个小项目中触发,但为什么呢?

这是布尔条件:

(messages != null && messages.Rows[0] != null)

我试图做的是检查这两个对象是否已初始化,但正如您已经想到的那样,这一切都是突然发生的。

【问题讨论】:

  • 嗯大概没有行...
  • 修改为:(messages != null && messages.Rows.Count > 0 ) or (messages != null && messages.Rows.Count > 0 && messages.Rows[0] != null)

标签: c# asp.net .net datatable indexoutofrangeexception


【解决方案1】:

听起来你也需要检查Rows 是否为空。我们实际上并不知道Rows 的类型,但您可能想要:

if (messages != null && messages.Rows.Count > 0 && messages.Rows[0] != null)

或者您可以使用 LINQ 获取第一行(如果存在),并检查它是否为空:

if (messages != null && messages.Rows.FirstOrDefault() != null)

(假设Rows 为某些T 实现了IEnumerable<T>。)

也有可能Rows[0]永远不会为空,你真的需要检查计数是否大于0:

if (messages != null && messages.Rows.Count > 0)

或者:

if (messages != null && messages.Rows.Any())

【讨论】:

  • 谢谢,成功了! -- 但是为什么还要检查 Rows 是否为空呢?只是从技术上讲不是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2023-02-20
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多