HybridDictionary::Add Method
Adds an entry with the specified key and value into the HybridDictionary.
Assembly: System (in System.dll)
Parameters
- key
- Type: System::Object
The key of the entry to add.
- value
- Type: System::Object
The value of the entry to add. The value can be nullptr.
Implements
IDictionary::Add(Object, Object)| Exception | Condition |
|---|---|
| ArgumentNullException | key is nullptr. |
| ArgumentException | An entry with the same key already exists in the HybridDictionary. |
An object that has no correlation between its state and its hash code value should typically not be used as the key. For example, String objects are better than StringBuilder objects for use as keys.
A key cannot be nullptr, but a value can.
You can also use the Item property to add new elements by setting the value of a key that does not exist in the HybridDictionary; for example, myCollection["myNonexistentKey"] = myValue. However, if the specified key already exists in the HybridDictionary, setting the Item property overwrites the old value. In contrast, the Add method does not modify existing elements.
When the number of elements becomes greater than the optimal size for a ListDictionary, the elements are copied from the ListDictionary to a Hashtable. However, this only happens once. If the collection is already stored in a Hashtable and the number of elements falls below the optimal size for a ListDictionary, the collection remains in the Hashtable.
This method is an O(1) operation.
The following code example adds to and removes elements from a HybridDictionary.
#using <System.dll> using namespace System; using namespace System::Collections; using namespace System::Collections::Specialized; void PrintKeysAndValues( IDictionary^ myCol ) { Console::WriteLine( " KEY VALUE" ); IEnumerator^ myEnum = myCol->GetEnumerator(); while ( myEnum->MoveNext() ) { DictionaryEntry de = safe_cast<DictionaryEntry>(myEnum->Current); Console::WriteLine( " {0,-25} {1}", de.Key, de.Value ); } Console::WriteLine(); } int main() { // Creates and initializes a new HybridDictionary. HybridDictionary^ myCol = gcnew HybridDictionary; myCol->Add( "Braeburn Apples", "1.49" ); myCol->Add( "Fuji Apples", "1.29" ); myCol->Add( "Gala Apples", "1.49" ); myCol->Add( "Golden Delicious Apples", "1.29" ); myCol->Add( "Granny Smith Apples", "0.89" ); myCol->Add( "Red Delicious Apples", "0.99" ); myCol->Add( "Plantain Bananas", "1.49" ); myCol->Add( "Yellow Bananas", "0.79" ); myCol->Add( "Strawberries", "3.33" ); myCol->Add( "Cranberries", "5.98" ); myCol->Add( "Navel Oranges", "1.29" ); myCol->Add( "Grapes", "1.99" ); myCol->Add( "Honeydew Melon", "0.59" ); myCol->Add( "Seedless Watermelon", "0.49" ); myCol->Add( "Pineapple", "1.49" ); myCol->Add( "Nectarine", "1.99" ); myCol->Add( "Plums", "1.69" ); myCol->Add( "Peaches", "1.99" ); // Displays the values in the HybridDictionary in three different ways. Console::WriteLine( "Initial contents of the HybridDictionary:" ); PrintKeysAndValues( myCol ); // Deletes a key. myCol->Remove( "Plums" ); Console::WriteLine( "The collection contains the following elements after removing \"Plums\":" ); PrintKeysAndValues( myCol ); // Clears the entire collection. myCol->Clear(); Console::WriteLine( "The collection contains the following elements after it is cleared:" ); PrintKeysAndValues( myCol ); } /* This code produces the following output. Initial contents of the HybridDictionary: KEY VALUE Seedless Watermelon 0.49 Nectarine 1.99 Cranberries 5.98 Plantain Bananas 1.49 Honeydew Melon 0.59 Pineapple 1.49 Strawberries 3.33 Grapes 1.99 Braeburn Apples 1.49 Peaches 1.99 Red Delicious Apples 0.99 Golden Delicious Apples 1.29 Yellow Bananas 0.79 Granny Smith Apples 0.89 Gala Apples 1.49 Plums 1.69 Navel Oranges 1.29 Fuji Apples 1.29 The collection contains the following elements after removing "Plums": KEY VALUE Seedless Watermelon 0.49 Nectarine 1.99 Cranberries 5.98 Plantain Bananas 1.49 Honeydew Melon 0.59 Pineapple 1.49 Strawberries 3.33 Grapes 1.99 Braeburn Apples 1.49 Peaches 1.99 Red Delicious Apples 0.99 Golden Delicious Apples 1.29 Yellow Bananas 0.79 Granny Smith Apples 0.89 Gala Apples 1.49 Navel Oranges 1.29 Fuji Apples 1.29 The collection contains the following elements after it is cleared: KEY VALUE */
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, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune
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.