由于if条件而发生IndexOutOfRangeException

本文关键字:IndexOutOfRangeException if 条件 由于 | 更新日期: 2023-09-27 18:02:44

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

下面是布尔条件:

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

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

由于if条件而发生IndexOutOfRangeException

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

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

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

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

(这是假设Rows实现IEnumerable<T>一些T)

也有可能Rows[0]永远不会为null,并且您真的只有需要检查计数是否大于0:

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

或:

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