ArrayList.IsReadOnly プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)


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

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
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 */
#using <system.dll> using namespace System; using namespace System::Collections; int main() { // Creates and initializes a new ArrayList. ArrayList^ myAL = gcnew 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 ? (String^)"read-only" : "writable" ); Console::WriteLine( "myReadOnlyAL is {0}.", myReadOnlyAL->IsReadOnly ? (String^)"read-only" : "writable" ); // Displays the contents of both collections. Console::WriteLine( "\nInitially," ); Console::WriteLine( "The original ArrayList myAL contains:" ); for ( int i(0); i < myAL->Count; ++i ) Console::WriteLine( " {0}", static_cast<String^>(myAL[ i ]) ); Console::WriteLine( "The read-only ArrayList myReadOnlyAL contains:" ); for ( int i(0); i < myReadOnlyAL->Count; ++i ) Console::WriteLine( " {0}", static_cast<String^>(myReadOnlyAL[ i ]) ); // 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( String::Concat( "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 i(0); i < myAL->Count; ++i ) Console::WriteLine( " {0}", static_cast<String^>(myAL[ i ]) ); Console::WriteLine( "The read-only ArrayList myReadOnlyAL contains:" ); for ( int i(0); i < myReadOnlyAL->Count; ++i ) Console::WriteLine( " {0}", static_cast<String^>(myReadOnlyAL[ 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 */
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 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
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からArrayList.IsReadOnly プロパティを検索する場合は、下記のリンクをクリックしてください。

- ArrayList.IsReadOnly プロパティのページへのリンク