最後編輯:2021-07-02
.Net
System.Collections
#ObjectModel下都是用來繼承的
Array類:
System.Array
System.Array[T]
尺寸固定 人排
可用 index
.ArrayList
.Generic.List[T]
.ObjectModel.Collection[T]
尺寸隨便 人排
可用 index
.Generic.LinkedList[T]+LinkedListNode[T]
尺寸隨便 人排 (插隊快?索引慢?)
(無index可用)
.Queue
.Generic.Queue[T]
尺寸隨便 先進先出
(無index可用、有ToArray())
.Stack
.Generic.Stack[T]
尺寸隨便 後放先拿
(無index可用……有ToArray(),組織顛倒的Array)
.Generic.HashSet[T]
尺寸隨便 不可重複 人排
(無index可用,也沒ToArray())
.Generic.SortedSet[T]
尺寸隨便 不可重複 機排
.BitArray
尺寸隨便
.Specialized.BitVector32
尺寸32bit
.Specialized.StringCollection
尺寸隨便 人排 僅限String
Object類:
(Non-generic都用.DictionaryEntry
Generic都用.Generic.KeyValuePair[,])
.Hashtable
.Generic.Dictionary[TKey,TValue]
.Specialized.ListDictionary
小專用 It is smaller and faster than a Hashtable if the number of elements is 10 or less.
.Specialized.HybridDictionary
小時ListDictionary,長大後換Hashtable
.Specialized.OrderedDictionary
可用 index 人排
.SortedList
.Generic.SortedList[TKey,TValue]
.Generic.SortedDictionary[TKey,TValue]
可用 index 機排
兩者差在佔位和速度 Where the two classes differ is in memory use and speed of insertion and removal
.Specialized.StringDictionary
僅限String 本不分大小寫
.Specialized.NameValueCollection
Name是String Value是多串String
可用 index 人排 本不分大小寫
.Specialized.CollectionsUtil 不分大小寫的 Hashtable 和 SortedList
介於 Array 和 Object 之間:
.ObjectModel.KeyedCollection[TKey,TItem]
必須覆替GetKeyForItem(TItem)
以Item的一部份作為Key(例如Property)
尺寸隨便 可用 index 人排
Get-Member -InputObject ([System.Collections.Generic.List[Byte]]::new())|? -CNotIn -Property Name -Value (Get-Member -InputObject ([System.Collections.ObjectModel.Collection[Byte]]::new())|% Name)