NameObjectCollectionBase::BaseSet Method (String^, Object^)

 

Sets the value of the first entry with the specified key in the NameObjectCollectionBase instance, if found; otherwise, adds an entry with the specified key and value into the NameObjectCollectionBase instance.

Namespace:   System.Collections.Specialized
Assembly:  System (in System.dll)

protected:
void BaseSet(
	String^ name,
	Object^ value
)

Parameters

name
Type: System::String^

The String key of the entry to set. The key can be null.

value
Type: System::Object^

The Object that represents the new value of the entry to set. The value can be null.

Exception Condition
NotSupportedException

The collection is read-only.

If the collection contains multiple entries with the specified key, this method sets only the first entry. To set the values of subsequent entries with the same key, use the enumerator to iterate through the collection and compare the keys.

This method is an O(1) operation.

The following code example uses BaseSet to set the value of a specific element.

#using <System.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Specialized;

public ref class MyCollection : public NameObjectCollectionBase  {

   // Gets or sets the value at the specified index.
public:
   property Object^ default[ int ]  {
      Object^ get(int index)  {
         return( this->BaseGet( index ) );
      }
      void set( int index, Object^ value )  {
         this->BaseSet( index, value );
      }
   }

   // Gets or sets the value associated with the specified key.
   property Object^ default[ String^ ]  {
      Object^ get(String^ key)  {
         return( this->BaseGet( key ) );
      }
      void set( String^ key, Object^ value )  {
         this->BaseSet( key, value );
      }
   }

   // Gets a String array that contains all the keys in the collection.
   property array<String^>^ AllKeys  {
      array<String^>^ get()  {
         return( this->BaseGetAllKeys() );
      }
   }

   // Adds elements from an IDictionary into the new collection.
   MyCollection( IDictionary^ d )  {
      for each ( DictionaryEntry^ de in d )  {
         this->BaseAdd( (String^) de->Key, de->Value );
      }
   }

};

public ref class SamplesNameObjectCollectionBase  {

public:
   static void Main()  {

      // Creates and initializes a new MyCollection instance.
      IDictionary^ d = gcnew ListDictionary();
      d->Add( "red", "apple" );
      d->Add( "yellow", "banana" );
      d->Add( "green", "pear" );
      MyCollection^ myCol = gcnew MyCollection( d );
      Console::WriteLine( "Initial state of the collection:" );
      PrintKeysAndValues2( myCol );
      Console::WriteLine();

      // Sets the value at index 1.
      myCol[1] = "sunflower";
      Console::WriteLine( "After setting the value at index 1:" );
      PrintKeysAndValues2( myCol );
      Console::WriteLine();

      // Sets the value associated with the key "red".
      myCol["red"] = "tulip";
      Console::WriteLine( "After setting the value associated with the key \"red\":" );
      PrintKeysAndValues2( myCol );

   }

   static void PrintKeysAndValues2( MyCollection^ myCol )  {
      for each ( String^ s in myCol->AllKeys )  {
         Console::WriteLine( "{0}, {1}", s, myCol[s] );
      }
   }
};

int main()
{
    SamplesNameObjectCollectionBase::Main();
}

/*
This code produces the following output.

Initial state of the collection:
red, apple
yellow, banana
green, pear

After setting the value at index 1:
red, apple
yellow, sunflower
green, pear

After setting the value associated with the key "red":
red, tulip
yellow, sunflower
green, pear

*/

Universal Windows Platform
Available since 10
.NET Framework
Available since 1.1
Return to top
Show: