OrderedDictionary Class
Represents a collection of key/value pairs that are accessible by the key or index.
Assembly: System (in System.dll)
Each element is a key/value pair stored in a DictionaryEntry object. A key cannot be null, but a value can be.
The elements of an OrderedDictionary are not sorted in any way. OrderedDictionary collections allow access by both index as well as key.
The foreach statement of the C# language (For Each in Visual Basic) requires the type of each element in the collection. Since each element of the OrderedDictionary collection is a key/value pair, the element type is not the type of the key or the type of the value. Instead, the element type is DictionaryEntry. The following code shows C# and Visual Basic syntax.
[Visual Basic, C#]
The foreach statement is a wrapper around the enumerator, which only allows reading from, not writing to, the collection.
The following code example demonstrates the creation, population and modification of an OrderedDictionary collection, as well as two techniques to display the contents of the OrderedDictionary: one using the Keys and Values properties and the other creating an enumerator through the GetEnumerator method.
// The following code example enumerates the elements of a OrderedDictionary. using System; using System.Collections; using System.Collections.Specialized; public class OrderedDictionarySample { public static void Main() { // Creates and initializes a OrderedDictionary. OrderedDictionary myOrderedDictionary = new OrderedDictionary(); myOrderedDictionary.Add("testKey1", "testValue1"); myOrderedDictionary.Add("testKey2", "testValue2"); myOrderedDictionary.Add("keyToDelete", "valueToDelete"); myOrderedDictionary.Add("testKey3", "testValue3"); ICollection keyCollection = myOrderedDictionary.Keys; ICollection valueCollection = myOrderedDictionary.Values; // Display the contents using the key and value collections DisplayContents(keyCollection, valueCollection, myOrderedDictionary.Count); // Modifying the OrderedDictionary if (!myOrderedDictionary.IsReadOnly) { // Insert a new key to the beginning of the OrderedDictionary myOrderedDictionary.Insert(0, "insertedKey1", "insertedValue1"); // Modify the value of the entry with the key "testKey2" myOrderedDictionary["testKey2"] = "modifiedValue"; // Remove the last entry from the OrderedDictionary: "testKey3" myOrderedDictionary.RemoveAt(myOrderedDictionary.Count - 1); // Remove the "keyToDelete" entry, if it exists if (myOrderedDictionary.Contains("keyToDelete")) { myOrderedDictionary.Remove("keyToDelete"); } } Console.WriteLine( "{0}Displaying the entries of a modified OrderedDictionary.", Environment.NewLine); DisplayContents(keyCollection, valueCollection, myOrderedDictionary.Count); // Clear the OrderedDictionary and add new values myOrderedDictionary.Clear(); myOrderedDictionary.Add("newKey1", "newValue1"); myOrderedDictionary.Add("newKey2", "newValue2"); myOrderedDictionary.Add("newKey3", "newValue3"); // Display the contents of the "new" Dictionary using an enumerator IDictionaryEnumerator myEnumerator = myOrderedDictionary.GetEnumerator(); Console.WriteLine( "{0}Displaying the entries of a \"new\" OrderedDictionary.", Environment.NewLine); DisplayEnumerator(myEnumerator); Console.ReadLine(); } // Displays the contents of the OrderedDictionary from its keys and values public static void DisplayContents( ICollection keyCollection, ICollection valueCollection, int dictionarySize) { String[] myKeys = new String[dictionarySize]; String[] myValues = new String[dictionarySize]; keyCollection.CopyTo(myKeys, 0); valueCollection.CopyTo(myValues, 0); // Displays the contents of the OrderedDictionary Console.WriteLine(" INDEX KEY VALUE"); for (int i = 0; i < dictionarySize; i++) { Console.WriteLine(" {0,-5} {1,-25} {2}", i, myKeys[i], myValues[i]); } Console.WriteLine(); } // Displays the contents of the OrderedDictionary using its enumerator public static void DisplayEnumerator(IDictionaryEnumerator myEnumerator) { Console.WriteLine(" KEY VALUE"); while (myEnumerator.MoveNext()) { Console.WriteLine(" {0,-25} {1}", myEnumerator.Key, myEnumerator.Value); } } } /* This code produces the following output. INDEX KEY VALUE 0 testKey1 testValue1 1 testKey2 testValue2 2 keyToDelete valueToDelete 3 testKey3 testValue3 Displaying the entries of a modified OrderedDictionary. INDEX KEY VALUE 0 insertedKey1 insertedValue1 1 testKey1 testValue1 2 testKey2 modifiedValue Displaying the entries of a "new" OrderedDictionary. KEY VALUE newKey1 newValue1 newKey2 newValue2 newKey3 newValue3 */
System.Collections.Specialized.OrderedDictionary
System.Web.Configuration.AdapterDictionary
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.