KeyedCollection<TKey, TItem>.ChangeItemKey Method

Changes the key associated with the specified element in the lookup dictionary.

Namespace:  System.Collections.ObjectModel
Assembly:  mscorlib (in mscorlib.dll)

protected void ChangeItemKey(
	TItem item,
	TKey newKey


Type: TItem
The element to change the key of.
Type: TKey
The new key for item.


item is null.


key is null.


item is not found.


key already exists in the KeyedCollection<TKey, TItem>.

This method does not modify the key embedded in item; it simply replaces the key saved in the lookup dictionary. Therefore, if newKey is different from the key that is embedded in item, you cannot access item by using the key returned by GetKeyForItem.

This method does nothing if the KeyedCollection<TKey, TItem> does not have a lookup dictionary.

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

This method is an O(1) operation.

Notes for Implementers

After modifying the key embedded in an item, you must call this method to update the key in the lookup dictionary. If the dictionary creation threshold is –1, calling this method is not necessary.

Do not expose the ChangeItemKey method as a public method of a derived class. Misuse of this method puts the lookup dictionary out of sync with item keys. For example, setting the key to null and then setting it to another value adds multiple keys for an item to the lookup dictionary. Expose this method internally to allow mutable item keys: When the key for an item changes, this method is used to change the key in the lookup dictionary.


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.

Community Additions