Silverlight 将不再支持 ArrayList 类型

阅读数:788 2007 年 7 月 5 日

话题:.NET微软语言 & 开发

为了减小 Silverlight 运行时的文件大小,大多数非泛型集合类型将不会再被支持。这些非泛型集合类型主要是那些曾经一度被看作.NET 编程本质的类型,如 ArrayList、Hashtable 和 Comparer 等。

根据微软基础类库团队的成员 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 发行版本里,微软现在还不打算清除这些类,或者将它们标识为弃用(obsolete)。

为了支持像数据绑定这样不需要知道类型的场景,在 Silverlight 里下面的一些非泛型接口将仍会得到保留:

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

有一些泛型集合也将不再被 Silverlight 支持,Inbar 解释说:

有三个泛型也被从 Silverlight 中清除掉了,包括 Queue、Stack 和 LinkedList 等。这儿并不是因为它们是非泛型,而是因为我们认为它们不是 Silverlight 所应提供的本质类型的一部分。记住,Silverlight 是一个非常小的下载,它应该只包括对开发有用的最小 API 集合。用 List 实现 Queue 和 Stack 非常容易,而 LinkedList 也只是一个带有不同性能特性 List 的不同实现而已,因此这些并不是我们核心集合群组的本质部分。

Inbar 还发表了一篇关于为什么泛型集合应该被用在传统.NET 编程中的文章,并提出了一些针对现有代码库如何进行改变的建议。

查看英文原文:Silverlight to Not Support ArrayList