Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

ArrayList.IsReadOnly Property

Gets a value indicating whether the ArrayList is read-only.

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

public virtual bool IsReadOnly { get; }
/** @property */
public boolean get_IsReadOnly ()

public function get IsReadOnly () : boolean

Not applicable.

Property Value

true if the ArrayList is read-only; otherwise, false. The default is 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 shows how to create a read-only wrapper around an ArrayList and how to determine if an ArrayList is read-only.

 using System;
 using System.Collections;
 public class SamplesArrayList  {
 
    public static void Main()  {
 
       // Creates and initializes a new ArrayList.
       ArrayList myAL = new ArrayList();
       myAL.Add( "red" );
       myAL.Add( "orange" );
       myAL.Add( "yellow" );
 
       // Creates a read-only copy of the ArrayList.
       ArrayList myReadOnlyAL = ArrayList.ReadOnly( myAL );
 
       // Displays whether the ArrayList is read-only or writable.
       Console.WriteLine( "myAL is {0}.", myAL.IsReadOnly ? "read-only" : "writable" );
       Console.WriteLine( "myReadOnlyAL is {0}.", myReadOnlyAL.IsReadOnly ? "read-only" : "writable" );
 
       // Displays the contents of both collections.
       Console.WriteLine( "\nInitially," );
       Console.WriteLine( "The original ArrayList myAL contains:" );
       foreach ( String myStr in myAL )
          Console.WriteLine( "   {0}", myStr );
       Console.WriteLine( "The read-only ArrayList myReadOnlyAL contains:" );
       foreach ( String myStr in myReadOnlyAL )
          Console.WriteLine( "   {0}", myStr );

       // Adding an element to a read-only ArrayList throws an exception.
       Console.WriteLine( "\nTrying to add a new element to the read-only ArrayList:" );
       try  {
          myReadOnlyAL.Add("green");
       } catch ( Exception myException )  {
          Console.WriteLine("Exception: " + myException.ToString());
       }

       // Adding an element to the original ArrayList affects the read-only ArrayList.
       myAL.Add( "blue" );

       // Displays the contents of both collections again.
       Console.WriteLine( "\nAfter adding a new element to the original ArrayList," );
       Console.WriteLine( "The original ArrayList myAL contains:" );
       foreach ( String myStr in myAL )
          Console.WriteLine( "   {0}", myStr );
       Console.WriteLine( "The read-only ArrayList myReadOnlyAL contains:" );
       foreach ( String myStr in myReadOnlyAL )
          Console.WriteLine( "   {0}", myStr );

    }

 }


/* 
This code produces the following output.

myAL is writable.
myReadOnlyAL is read-only.

Initially,
The original ArrayList myAL contains:
   red
   orange
   yellow
The read-only ArrayList myReadOnlyAL contains:
   red
   orange
   yellow

Trying to add a new element to the read-only ArrayList:
Exception: System.NotSupportedException: Collection is read-only.
   at System.Collections.ReadOnlyArrayList.Add(Object obj)
   at SamplesArrayList.Main()

After adding a new element to the original ArrayList,
The original ArrayList myAL contains:
   red
   orange
   yellow
   blue
The read-only ArrayList myReadOnlyAL contains:
   red
   orange
   yellow
   blue

*/


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

public class SamplesArrayList
{
    public static void main(String[] args)
    {
        // Creates and initializes a new ArrayList.
        ArrayList myAL = new ArrayList();

        myAL.Add("red");
        myAL.Add("orange");
        myAL.Add("yellow");

        // Creates a read-only copy of the ArrayList.
        ArrayList myReadOnlyAL = ArrayList.ReadOnly(myAL);

        // Displays whether the ArrayList is read-only or writable.
        Console.WriteLine("myAL is {0}.", myAL.get_IsReadOnly()
            ? "read-only" : "writable");
        Console.WriteLine("myReadOnlyAL is {0}.",myReadOnlyAL.get_IsReadOnly()
            ? "read-only" : "writable");

        // Displays the contents of both collections.
        Console.WriteLine("\nInitially,");
        Console.WriteLine("The original ArrayList myAL contains:");
        for (int iCtr = 0; iCtr < myAL.get_Count(); iCtr++) {
            String myStr = myAL.get_Item(iCtr).ToString();
            Console.WriteLine("   {0}", myStr);
        }
        Console.WriteLine("The read-only ArrayList myReadOnlyAL contains:");
        for (int iCtr = 0; iCtr < myReadOnlyAL.get_Count(); iCtr++) {
            String myStr = myReadOnlyAL.get_Item(iCtr).ToString();
            Console.WriteLine("   {0}", myStr);
        }

        // Adding an element to a read-only ArrayList throws an exception.
        Console.WriteLine("\nTrying to add a new element to the read-only"
            + " ArrayList:");
        try {
            myReadOnlyAL.Add("green");
        }
        catch (System.Exception myException) {
            Console.WriteLine("Exception: " + myException.ToString());
        }

        // Adding an element to the original ArrayList affects the 
        // read-only ArrayList.
        myAL.Add("blue");

        // Displays the contents of both collections again.
        Console.WriteLine("\nAfter adding a new element "
            + "to the original ArrayList,");
        Console.WriteLine("The original ArrayList myAL contains:");
        for (int iCtr = 0; iCtr < myAL.get_Count(); iCtr++) {
            String myStr = myAL.get_Item(iCtr).ToString();
            Console.WriteLine("   {0}", myStr);
        }
        Console.WriteLine("The read-only ArrayList myReadOnlyAL contains:");
        for (int iCtr = 0; iCtr < myReadOnlyAL.get_Count(); iCtr++) {
            String myStr = myReadOnlyAL.get_Item(iCtr).ToString();
            Console.WriteLine("   {0}", myStr);
        }
    } //main 
} //SamplesArrayList

/* 
This code produces the following output.

myAL is writable.
myReadOnlyAL is read-only.

Initially,
The original ArrayList myAL contains:
   red
   orange
   yellow
The read-only ArrayList myReadOnlyAL contains:
   red
   orange
   yellow

Trying to add a new element to the read-only ArrayList:
Exception: System.NotSupportedException: Collection is read-only.
   at System.Collections.ReadOnlyArrayList.Add(Object obj)
   at SamplesArrayList.main(String[] args)

After adding a new element to the original ArrayList,
The original ArrayList myAL contains:
   red
   orange
   yellow
   blue
The read-only ArrayList myReadOnlyAL contains:
   red
   orange
   yellow
   blue

*/

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
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.