Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

ArrayList.ReadOnly Method (ArrayList)

Returns a read-only ArrayList wrapper.

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

public static ArrayList ReadOnly (
	ArrayList list
)
public static ArrayList ReadOnly (
	ArrayList list
)
public static function ReadOnly (
	list : ArrayList
) : ArrayList
Not applicable.

Parameters

list

The ArrayList to wrap.

Return Value

A read-only ArrayList wrapper around list.

Exception typeCondition

ArgumentNullException

list is a null reference (Nothing in Visual Basic).

To prevent any modifications to list, expose list only through this wrapper.

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

This method 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 Millennium Edition, 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
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

Show:
© 2015 Microsoft