1

プロジェクトを7.0から7.1に変換して以来、非常に奇妙なエラーが発生しています。例えば:

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

2行目に範囲外の引数をスローしますが、マウスをロックに置くと、11個の要素があり、すべてがfalseに初期化されていることが示されます。

4

1 に答える 1

5

List<T>SilverlightFrameworkでMSDNエントリを検索しました。投稿したコードが正確なコードである場合はArgumentOutOfRangeException、インデックスが存在しないため、を取得しています。

コンストラクターList<bool> locks = new List<bool>(11);は、要素が0で、初期容量が11の新しいリストを作成しています。

を呼び出すとlocks[0] = true;、まだ追加されていない要素にアクセスしようとしているため、例外がスローされます。

あなたのコメントに基づくと、リストに11個のブール値が表示されているようです。2行の間にさらにコードがない限り、それは不可能です。

デバッガーを使用して、オブジェクトを十分に深く掘り下げると、List<bool>11個の要素を持つのバッキング配列が表示されます。しかし、Listそれ自体には要素がありません。これを確認するには、List.Count

そして、あなたはnullどこでもブール値で決して見ることはありません。 boolはデフォルト値がfalseの値型であるため、バッキング配列は11個の要素をすべてfalseで表示しています。

于 2012-07-28T19:41:49.443 に答える