Export (0) Print
Expand All

NameObjectCollectionBase.IsReadOnly Property

Gets or sets a value indicating whether the NameObjectCollectionBase instance is read-only.

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

protected bool IsReadOnly { get; set; }
/** @property */
protected boolean get_IsReadOnly ()

/** @property */
protected void set_IsReadOnly (boolean value)

protected function get IsReadOnly () : boolean

protected function set IsReadOnly (value : boolean)

Not applicable.

Property Value

true if the NameObjectCollectionBase instance is read-only; otherwise, false.

A collection that is read-only does not allow the addition, removal, or modification of elements after the collection is created.

A collection that is read-only is simply a collection with a wrapper that prevents modifying the collection; therefore, if changes are made to the underlying collection, the read-only collection reflects those changes.

Retrieving the value of this property is an O(1) operation.

The following code example creates a read-only collection.

using System;
using System.Collections;
using System.Collections.Specialized;

public class MyCollection : NameObjectCollectionBase  {

   private DictionaryEntry _de = new DictionaryEntry();

   // Gets a key-and-value pair (DictionaryEntry) using an index.
   public DictionaryEntry this[ int index ]  {
      get  {
         _de.Key = this.BaseGetKey( index );
         _de.Value = this.BaseGet( index );
         return( _de );
      }
   }

   // Adds elements from an IDictionary into the new collection.
   public MyCollection( IDictionary d, Boolean bReadOnly )  {
      foreach ( DictionaryEntry de in d )  {
         this.BaseAdd( (String) de.Key, de.Value );
      }
      this.IsReadOnly = bReadOnly;
   }

   // Adds an entry to the collection.
   public void Add( String key, Object value )  {
      this.BaseAdd( key, value );
   }

}

public class SamplesNameObjectCollectionBase  {

   public static void Main()  {

      // Creates and initializes a new MyCollection that is read-only.
      IDictionary d = new ListDictionary();
      d.Add( "red", "apple" );
      d.Add( "yellow", "banana" );
      d.Add( "green", "pear" );
      MyCollection myROCol = new MyCollection( d, true );

      // Tries to add a new item.
      try  {
         myROCol.Add( "blue", "sky" );
      }
      catch ( NotSupportedException e )  {
         Console.WriteLine( e.ToString() );
      }

      // Displays the keys and values of the MyCollection.
      Console.WriteLine( "Read-Only Collection:" );
      PrintKeysAndValues( myROCol );

   }

   public static void PrintKeysAndValues( MyCollection myCol )  {
      for ( int i = 0; i < myCol.Count; i++ )  {
         Console.WriteLine( "[{0}] : {1}, {2}", i, myCol[i].Key, myCol[i].Value );
      }
   }

}


/*
This code produces the following output.

System.NotSupportedException: Collection is read-only.
   at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(String name, Object value)
   at SamplesNameObjectCollectionBase.Main()
Read-Only Collection:
[0] : red, apple
[1] : yellow, banana
[2] : green, pear

*/

import System.* ;
import System.Collections.* ;
import System.Collections.Specialized.* ;

public class MyCollection extends NameObjectCollectionBase
{
    private DictionaryEntry _de =  new DictionaryEntry();

    // Gets a key-and-value pair (DictionaryEntry) using an index.
    /** @property 
     */
    public DictionaryEntry get_Item(int index)
    {
        _de.set_Key(this.BaseGetKey(index));
        _de.set_Value(this.BaseGet(index));
        return _de ;
    } //get_Item

    // Adds elements from an IDictionary into the new collection.
    public MyCollection(IDictionary d, boolean bReadOnly) 
    {        
        IDictionaryEnumerator objEnum = d.GetEnumerator();

        while (objEnum.MoveNext()) {        
            DictionaryEntry de = (DictionaryEntry)objEnum.get_Current();
            this.BaseAdd(((String)(de.get_Key())), de.get_Value());
        }

        this.set_IsReadOnly(bReadOnly);
    } //MyCollection

    // Adds an entry to the collection.
    public void Add(String key, Object value)
    {
        this.BaseAdd(key, value);
    } //Add
} //MyCollection


public class SamplesNameObjectCollectionBase
{
    public static void main(String[] args)
    {
        // Creates and initializes a new MyCollection that is read-only.
        IDictionary d = new ListDictionary();
        d.Add("red", "apple");
        d.Add("yellow", "banana");
        d.Add("green", "pear");
        MyCollection myROCol =  new MyCollection(d,true);
        
        // Tries to add a new item.
        try {
            myROCol.Add("blue", "sky");
        }
        catch(NotSupportedException e) {
            Console.WriteLine(e.ToString());
        }
        
        // Displays the keys and values of the MyCollection.
        Console.WriteLine("Read-Only Collection:");
        PrintKeysAndValues(myROCol);
    } //main

    public static void PrintKeysAndValues(MyCollection myCol)
    {
        for(int i=0;i < myCol.get_Count(); i++) {        
            Console.WriteLine("[{0}] : {1}, {2}",System.Convert.ToString(i),
                myCol.get_Item(i).get_Key(), myCol.get_Item(i).get_Value());
        } 
    } //PrintKeysAndValues
} //SamplesNameObjectCollectionBase 

/*
This code produces the following output.

System.NotSupportedException: Collection is read-only.
   at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(
String name, Object value)
   at SamplesNameObjectCollectionBase.main(String[] args)
Read-Only Collection:
[0] : red, apple
[1] : yellow, banana
[2] : green, pear

*/

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

XNA Framework

Supported in: 1.0

Community Additions

ADD
Show:
© 2014 Microsoft