次の方法で共有


ArrayList.IsReadOnly プロパティ

ArrayList が読み取り専用かどうかを示す値を取得します。

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;

プロパティ値

ArrayList が読み取り専用の場合は true 。それ以外の場合は false 。既定値は false です。

実装

IList.IsReadOnly

解説

読み取り専用のコレクションでは、コレクション作成後に要素の追加、削除、または変更はできません。

読み取り専用のコレクションは、コレクションの変更を防ぐラッパーがコレクションに組み込まれているに過ぎません。したがって、基になっているコレクションで変更が加えられた場合、読み取り専用のコレクションでもその内容が反映されます。

使用例

[Visual Basic, C#, C++] ArrayList をラップする読み取り専用のラッパーを作成する方法、および ArrayList が読み取り専用かどうかを確認する方法を次の例に示します。

 
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

ArrayList クラス | ArrayList メンバ | System.Collections 名前空間 | ReadOnly