This topic has not yet been rated - Rate this topic

KeyedCollection<TKey, TItem> Class

Provides the abstract base class for a collection whose keys are embedded in the values.

Namespace:  System.Collections.ObjectModel
Assembly:  mscorlib (in mscorlib.dll)
[DebuggerDisplayAttribute("Count = {Count}")]
[DefaultMemberAttribute("Item")]
[ComVisibleAttribute(false)]
public abstract class KeyedCollection<TKey, TItem> : Collection<TItem>

Type Parameters

TKey

The type of keys in the collection.

TItem

The type of items in the collection.

The KeyedCollection<TKey, TItem> type exposes the following members.

  Name Description
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 KeyedCollection<TKey, TItem>() Initializes a new instance of the KeyedCollection<TKey, TItem> class that uses the default equality comparer.
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 KeyedCollection<TKey, TItem>(IEqualityComparer<TKey>) Initializes a new instance of the KeyedCollection<TKey, TItem> class that uses the specified equality comparer.
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 KeyedCollection<TKey, TItem>(IEqualityComparer<TKey>, Int32) Initializes a new instance of the KeyedCollection<TKey, TItem> class that uses the specified equality comparer and creates a lookup dictionary when the specified threshold is exceeded.
Top
  Name Description
Public property Supported by Silverlight for Windows Phone Supported by Xbox 360 Comparer Gets the generic equality comparer that is used to determine equality of keys in the collection.
Public property Supported by Silverlight for Windows Phone Supported by Xbox 360 Count Gets the number of elements actually contained in the Collection<T>. (Inherited from Collection<T>.)
Protected property Supported by Silverlight for Windows Phone Supported by Xbox 360 Dictionary Gets the lookup dictionary of the KeyedCollection<TKey, TItem>.
Public property Supported by Silverlight for Windows Phone Supported by Xbox 360 Item[TKey] Gets the element with the specified key.
Public property Supported by Silverlight for Windows Phone Supported by Xbox 360 Item[Int32] Gets or sets the element at the specified index. (Inherited from Collection<T>.)
Protected property Supported by Silverlight for Windows Phone Supported by Xbox 360 Items Gets a IList<T> wrapper around the Collection<T>. (Inherited from Collection<T>.)
Top
  Name Description
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Add Adds an object to the end of the Collection<T>. (Inherited from Collection<T>.)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 ChangeItemKey Changes the key associated with the specified element in the lookup dictionary.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Clear Removes all elements from the Collection<T>. (Inherited from Collection<T>.)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 ClearItems Removes all elements from the KeyedCollection<TKey, TItem>. (Overrides Collection<T>.ClearItems().)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Contains(T) Determines whether an element is in the Collection<T>. (Inherited from Collection<T>.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Contains(TKey) Determines whether the collection contains an element with the specified key.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 CopyTo Copies the entire Collection<T> to a compatible one-dimensional Array, starting at the specified index of the target array. (Inherited from Collection<T>.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 Finalize Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 GetEnumerator Returns an enumerator that iterates through the Collection<T>. (Inherited from Collection<T>.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 GetKeyForItem When implemented in a derived class, extracts the key from the specified element.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 GetType Gets the Type of the current instance. (Inherited from Object.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 IndexOf Searches for the specified object and returns the zero-based index of the first occurrence within the entire Collection<T>. (Inherited from Collection<T>.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Insert Inserts an element into the Collection<T> at the specified index. (Inherited from Collection<T>.)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 InsertItem Inserts an element into the KeyedCollection<TKey, TItem> at the specified index. (Overrides Collection<T>.InsertItem(Int32, T).)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Remove(T) Removes the first occurrence of a specific object from the Collection<T>. (Inherited from Collection<T>.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Remove(TKey) Removes the element with the specified key from the KeyedCollection<TKey, TItem>.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 RemoveAt Removes the element at the specified index of the Collection<T>. (Inherited from Collection<T>.)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 RemoveItem Removes the element at the specified index of the KeyedCollection<TKey, TItem>. (Overrides Collection<T>.RemoveItem(Int32).)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 SetItem Replaces the item at the specified index with the specified item. (Overrides Collection<T>.SetItem(Int32, T).)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Explicit interface implemetation Private method Supported by Silverlight for Windows Phone Supported by Xbox 360 ICollection.CopyTo Copies the elements of the ICollection to an Array, starting at a particular Array index. (Inherited from Collection<T>.)
Explicit interface implemetation Private property Supported by Silverlight for Windows Phone Supported by Xbox 360 ICollection<T>.IsReadOnly Gets a value indicating whether the ICollection<T> is read-only. (Inherited from Collection<T>.)
Explicit interface implemetation Private property Supported by Silverlight for Windows Phone Supported by Xbox 360 ICollection.IsSynchronized Gets a value indicating whether access to the ICollection is synchronized (thread safe). (Inherited from Collection<T>.)
Explicit interface implemetation Private property Supported by Silverlight for Windows Phone Supported by Xbox 360 ICollection.SyncRoot Gets an object that can be used to synchronize access to the ICollection. (Inherited from Collection<T>.)
Explicit interface implemetation Private method Supported by Silverlight for Windows Phone Supported by Xbox 360 IEnumerable.GetEnumerator Returns an enumerator that iterates through a collection. (Inherited from Collection<T>.)
Explicit interface implemetation Private method Supported by Silverlight for Windows Phone Supported by Xbox 360 IList.Add Adds an item to the IList. (Inherited from Collection<T>.)
Explicit interface implemetation Private method Supported by Silverlight for Windows Phone Supported by Xbox 360 IList.Contains Determines whether the IList contains a specific value. (Inherited from Collection<T>.)
Explicit interface implemetation Private method Supported by Silverlight for Windows Phone Supported by Xbox 360 IList.IndexOf Determines the index of a specific item in the IList. (Inherited from Collection<T>.)
Explicit interface implemetation Private method Supported by Silverlight for Windows Phone Supported by Xbox 360 IList.Insert Inserts an item into the IList at the specified index. (Inherited from Collection<T>.)
Explicit interface implemetation Private property Supported by Silverlight for Windows Phone Supported by Xbox 360 IList.IsFixedSize Gets a value indicating whether the IList has a fixed size. (Inherited from Collection<T>.)
Explicit interface implemetation Private property Supported by Silverlight for Windows Phone Supported by Xbox 360 IList.IsReadOnly Gets a value indicating whether the IList is read-only. (Inherited from Collection<T>.)
Explicit interface implemetation Private property Supported by Silverlight for Windows Phone Supported by Xbox 360 IList.Item Gets or sets the element at the specified index. (Inherited from Collection<T>.)
Explicit interface implemetation Private method Supported by Silverlight for Windows Phone Supported by Xbox 360 IList.Remove Removes the first occurrence of a specific object from the IList. (Inherited from Collection<T>.)
Top

The KeyedCollection<TKey, TItem> class provides both O(1) indexed retrieval and keyed retrieval that approaches O(1). It is an abstract type (MustInherit in Visual Basic), or more accurately an infinite set of abstract types, because each of its constructed generic types is an abstract base class. To use KeyedCollection<TKey, TItem>, derive your collection type from the appropriate constructed type.

The KeyedCollection<TKey, TItem> class is a hybrid between a collection based on the IList<T> generic interface and a collection based on the IDictionary<TKey, TValue> generic interface. Like collections based on the IList<T> generic interface, KeyedCollection<TKey, TItem> is an indexed list of items. Like collections based on the IDictionary<TKey, TValue> generic interface, KeyedCollection<TKey, TItem> has a key associated with each element.

Unlike dictionaries, an element of KeyedCollection<TKey, TItem> is not a key/value pair; instead, the entire element is the value and the key is embedded within the value. For example, an element of a collection derived from KeyedCollection<String,String> (KeyedCollection(Of String, String) in Visual Basic) might be "John Doe Jr." where the value is "John Doe Jr." and the key is "Doe"; or a collection of employee records containing integer keys could be derived from KeyedCollection<int,Employee>. The abstract (MustOverride in Visual Basic) GetKeyForItem method extracts the key from the element.

By default, the KeyedCollection<TKey, TItem> includes a lookup dictionary. When an item is added to the KeyedCollection<TKey, TItem>, the item's key is extracted once and saved in the lookup dictionary for faster searches. This behavior is overridden by specifying a dictionary creation threshold when you create the KeyedCollection<TKey, TItem>. The lookup dictionary is created the first time the number of elements exceeds that threshold. If you specify –1 as the threshold, the lookup dictionary is never created.

Note Note:

When the internal lookup dictionary is used, it contains references to all the items in the collection if TItem is a reference type, or copies of all the items in the collection if TItem is a value type. Thus, using the lookup dictionary may not be appropriate if TItem is a value type.

Every key in a KeyedCollection<TKey, TItem> must be unique. A key cannot be null.

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ