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.IsReadOnly Property

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

[Visual Basic]
Public Overridable ReadOnly Property IsReadOnly As Boolean  _
   Implements IList.IsReadOnly
[C#]
public virtual bool IsReadOnly {get;}
[C++]
public: __property virtual bool get_IsReadOnly();
[JScript]
public function get IsReadOnly() : Boolean;

Property Value

true if the ArrayList is read-only; otherwise, false. The default is false.

Implements

IList.IsReadOnly

Remarks

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.

Example

[Visual Basic, C#, C++] The following example shows how to create a read-only wrapper around an ArrayList and how to determine if an ArrayList is read-only.

[Visual Basic] 
Imports System
Imports System.Collections

Public Class SamplesArrayList

   Public Shared Sub Main()

      Dim myStr As [String]

      ' Creates and initializes a new ArrayList.
      Dim myAL As New ArrayList()
      myAL.Add("red")
      myAL.Add("orange")
      myAL.Add("yellow")

      ' Creates a read-only copy of the ArrayList.
      Dim myReadOnlyAL As ArrayList = ArrayList.ReadOnly(myAL)

      ' Displays whether the ArrayList is read-only or writable.
      If myAL.IsReadOnly Then
         Console.WriteLine("myAL is read-only.")
      Else
         Console.WriteLine("myAL is writable.")
      End If
      If myReadOnlyAL.IsReadOnly Then
         Console.WriteLine("myReadOnlyAL is read-only.")
      Else
         Console.WriteLine("myReadOnlyAL is writable.")
      End If

      ' Displays the contents of both collections.
      Console.WriteLine()
      Console.WriteLine("Initially,")
      Console.WriteLine("The original ArrayList myAL contains:")
      For Each myStr In  myAL
         Console.WriteLine("   {0}", myStr)
      Next myStr
      Console.WriteLine("The read-only ArrayList myReadOnlyAL contains:")
      For Each myStr In  myReadOnlyAL
         Console.WriteLine("   {0}", myStr)
      Next myStr 

      ' Adding an element to a read-only ArrayList throws an exception.
      Console.WriteLine()
      Console.WriteLine("Trying to add a new element to the read-only ArrayList:")
      Try
         myReadOnlyAL.Add("green")
      Catch myException As Exception
         Console.WriteLine(("Exception: " + myException.ToString()))
      End Try

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

      ' Displays the contents of both collections again.
      Console.WriteLine()
      Console.WriteLine("After adding a new element to the original ArrayList,")
      Console.WriteLine("The original ArrayList myAL contains:")
      For Each myStr In  myAL
         Console.WriteLine("   {0}", myStr)
      Next myStr
      Console.WriteLine("The read-only ArrayList myReadOnlyAL contains:")
      For Each myStr In  myReadOnlyAL
         Console.WriteLine("   {0}", myStr)
      Next myStr 

   End Sub 'Main

End Class '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()
'
'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


[C#] 
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

*/


[C++] 
#using <mscorlib.dll>
#using <system.dll>

using namespace System;
using namespace System::Collections;

int main()  {

       // Creates and initializes a new ArrayList.
       ArrayList* myAL = new ArrayList();
       myAL->Add( S"red" );
       myAL->Add( S"orange" );
       myAL->Add( S"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( S"myAL is {0}.", myAL->IsReadOnly ? S"read-only" : S"writable" );
       Console::WriteLine( S"myReadOnlyAL is {0}.", myReadOnlyAL->IsReadOnly ? S"read-only" : S"writable" );

       // Displays the contents of both collections.
       Console::WriteLine( S"\nInitially," );
       Console::WriteLine( S"The original ArrayList myAL contains:" );
       for( int i(0); i < myAL->Count; ++i )
             Console::WriteLine( "   {0}", static_cast<String*>(myAL->Item[i]) );
       Console::WriteLine( S"The read-only ArrayList myReadOnlyAL contains:" );
       for( int i(0); i < myReadOnlyAL->Count; ++i )
          Console::WriteLine( S"   {0}", static_cast<String*>(myReadOnlyAL->Item[i]) );

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

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

       // Displays the contents of both collections again.
       Console::WriteLine( S"\nAfter adding a new element to the original ArrayList," );
       Console::WriteLine( S"The original ArrayList myAL contains:" );
       for( int i(0); i < myAL->Count; ++i )
          Console::WriteLine( S"   {0}", static_cast<String*>(myAL->Item[i]) );
       Console::WriteLine( S"The read-only ArrayList myReadOnlyAL contains:" );
       for( int i(0); i < myReadOnlyAL->Count; ++i )
          Console::WriteLine( S"   {0}", static_cast<String*>(myReadOnlyAL->Item[i]) );

}

/*
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

*/

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard

See Also

ArrayList Class | ArrayList Members | System.Collections Namespace | ReadOnly

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft