超出范围异常但索引在范围内! wp 7.1

时间:2012-07-28 19:05:12

标签: windows-phone-7

自从我将项目从7.0转换为7.1后,我一直遇到非常奇怪的错误。例如:

List<bool> locks = new List<bool>(11);
locks[0] = true;

它会在第二行抛出一个超出范围异常的参数,但当我将鼠标放在锁上时,它会显示它有11个元素,所有这些元素都被初始化为false。

1 个答案:

答案 0 :(得分:5)

我刚刚在Silverlight Framework中查找了List<T>的MSDN条目。如果您发布的代码是您的确切代码,那么您将获得ArgumentOutOfRangeException,因为该索引不存在。

您的构造函数List<bool> locks = new List<bool>(11);正在创建一个包含0个元素的新List,但初始容量为11。

当您调用locks[0] = true;时,您正在尝试访问尚未添加的元素,因此会抛出异常。

根据你的评论,看起来你在列表中看到了11个bool。除非在两行之间有更多代码,否则这是不可能的。

使用调试器,如果深入挖掘对象,您将看到List<bool>的后备数组,它将包含11个元素。但List本身没有任何元素。您可以通过致电List.Count

轻松验证这一点

你永远不会在任何地方看到null的bool值。 bool是一个默认值为false的值类型,这就是后备数组显示11个元素全为false的原因。