2010-11-15 34 views
7

Visual Studio 2010的Silverlight是否支持ArrayList?如果是,那麼如何使用它,如果不是那麼爲什麼?Silverlight和ArrayList

如何在Silverlight中使用ArrayList?

回答

13

Silverlight現在不支持ArrayList,請參閱 http://www.infoq.com/news/2007/07/ArrayList-Gone

編輯: 下面是這個環節的內容,

減少Silverlight運行時的大小的努力,大多數非泛型集合類型將被移除。這些包括曾經被認爲對.NET編程至關重要的類型,包括ArrayList,Hashtable和Comparer。

根據微軟Base Class Library團隊的Inbar Gazit的說法,非泛型集合不會隨Silverlight 1.1一起發佈。這意味着雖然您可以繼續將它們用於主要的.NET發行版,但它們不能用於任何針對Silverlight的程序集。受影響的類別是:

* ArrayList 
* BitArray 
* CaseInsensitiveComparer 
* CaseInsensitiveHashCodeProvider 
* CollectionBase 
* Comparer 
* CompatibleComparer 
* DictionaryBase 
* EmptyReadOnlyDictionaryInternal 
* Hashtable 
* IHashCodeProvider 
* KeyValuePairs 
* ListDictionaryInternal 
* Queue 
* ReadOnlyCollectionBase 
* SortedList 
* Stack 

只是要清楚,微軟而不是消除這些類或標記他們在這段時間的主要.NET分佈爲過時規劃。

爲了支持類型不一定已知的數據綁定等場景,以下非泛型接口將保留在Silverlight中。

* IEnumerator 
* IEnumerable 
* ICollection 
* IComparer 
* IDictionary 
* IDictionaryEnumerator 
* DictionaryEntry 
* IEqualityComparer 
* IList 

某些泛型集合也從Silverlight中刪除。 Inbar解釋說,

另外三個通用類型也被刪除。 Queue,Stack和LinkedList從Silverlight中刪除。在這種情況下,並不是因爲它們是非泛型的,而是因爲它們不被認爲是我們認爲與Silverlight一起提供的核心類型的一部分。請記住,Silverlight是一個非常小的下載,並且應該只包含最小的一組API,可以進行有用的開發。使用List實現Queue和Stack非常簡單,LinkedList只是List的不同實現,具有不同的性能特徵,所以它不是我們核心集合組的重要組成部分。

也請檢查C# - Replacement for.NET ArrayList.ToArray(Type) in Silverlight

5

一種替代是使用:

IList <object> list = new List <object>();