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

jol*_*ojr 1 windows-phone-7

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

List<bool> locks = new List<bool>(11);
locks[0] = true;
Run Code Online (Sandbox Code Playgroud)

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

psu*_*003 5

我只是List<T>在Silverlight框架中查找了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的原因.