自從我把我的項目從7.0轉換到7.1之後,我一直在收到非常奇怪的錯誤。例如:超出範圍的異常,但索引在範圍內! WP 7.1
List<bool> locks = new List<bool>(11);
locks[0] = true;
它拋出一個參數超出範圍例外的第二行,但是當我把我的鼠標上的鎖就說明它有11個元素所有這一切都被初始化爲false。
自從我把我的項目從7.0轉換到7.1之後,我一直在收到非常奇怪的錯誤。例如:超出範圍的異常,但索引在範圍內! WP 7.1
List<bool> locks = new List<bool>(11);
locks[0] = true;
它拋出一個參數超出範圍例外的第二行,但是當我把我的鼠標上的鎖就說明它有11個元素所有這一切都被初始化爲false。
我剛剛在Silverlight框架中查找了List<T>
的MSDN條目。如果您發佈的代碼是您的確切代碼,您將獲得ArgumentOutOfRangeException
,因爲索引不存在。
你的構造List<bool> locks = new List<bool>(11);
創造與0元素的新名單,但11
當你調用locks[0] = true;
,您試圖訪問不被被添加到一個元素的初始容量,所以異常被拋出。
根據你的評論,它看起來像你在列表中看到11布爾的。除非你在兩行之間有更多的代碼,否則這是不可能的。
使用調試器,如果您深入挖掘對象,您將看到List<bool>
的支持數組,其中將有11個元素。但List
本身沒有任何元素。您可以通過致電List.Count
來輕鬆驗證此功能,並且您永遠不會在任何地方看到null
爲bool值。 bool
是一個默認值爲false的值類型,這就是爲什麼支持數組顯示11個元素都是false的原因。
不要使用wp7開發太多,但除非它使用比完整版本的.NET稍微不同的List版本,否則您會遇到超範圍異常,因爲構造函數過載列表(Int32)不會添加許多元素。它只是將類內的backing數組初始化爲11個元素。所以你打電話索引0還不存在 –
psubsee2003
2012-07-28 19:18:26
我以爲我在其他地方使用了相同的代碼,它的工作,但回頭看我以前使用添加。 你說得對。我想我很困惑,因爲它顯示列表中有11個布爾值對象,而不是11個空值。 – jolyrojr 2012-07-28 19:39:39
是的,我只是在Silverlight框架中查找List,行爲與.NET 4.0相同。我會讓我的評論成爲答案 –
psubsee2003
2012-07-28 19:41:32