自从我将项目从 7.0 转换为 7.1 后,我就遇到了非常奇怪的错误。例如:
List<bool> locks = new List<bool>(11);
locks[0] = true;
它在第二行抛出一个参数超出范围异常,但是当我将鼠标放在锁上时,它显示它有 11 个元素,所有这些元素都初始化为 false。
自从我将项目从 7.0 转换为 7.1 后,我就遇到了非常奇怪的错误。例如:
List<bool> locks = new List<bool>(11);
locks[0] = true;
它在第二行抛出一个参数超出范围异常,但是当我将鼠标放在锁上时,它显示它有 11 个元素,所有这些元素都初始化为 false。
List<T>
我只是在 Silverlight 框架中查找了 MSDN 条目。如果您发布的代码是您的确切代码,那么您将得到 ,ArgumentOutOfRangeException
因为索引不存在。
您的构造函数List<bool> locks = new List<bool>(11);
正在创建一个包含 0 个元素的新列表,但初始容量为 11。
当您调用 时locks[0] = true;
,您正在尝试访问尚未添加的元素,因此会引发异常。
根据您的评论,您似乎在列表中看到了 11 个布尔值。除非您在两行之间有更多代码,否则这是不可能的。
使用调试器,如果您深入研究对象,您将看到 的支持数组,该数组List<bool>
将包含 11 个元素。但它List
本身没有任何元素。您可以通过调用轻松验证这一点List.Count
而且你永远不会null
在任何地方看到布尔值。 bool
是一个默认值为 false 的值类型,这就是为什么后备数组显示 11 个元素全部为 false 的原因。