ArrayList.ReadOnly ArrayList.ReadOnly ArrayList.ReadOnly ArrayList.ReadOnly Method

정의

읽기 전용인 목록 래퍼를 반환합니다.Returns a list wrapper that is read-only.

오버로드

ReadOnly(ArrayList) ReadOnly(ArrayList) ReadOnly(ArrayList) ReadOnly(ArrayList)

읽기 전용 ArrayList 래퍼를 반환합니다.Returns a read-only ArrayList wrapper.

ReadOnly(IList) ReadOnly(IList) ReadOnly(IList) ReadOnly(IList)

읽기 전용 IList 래퍼를 반환합니다.Returns a read-only IList wrapper.

ReadOnly(ArrayList) ReadOnly(ArrayList) ReadOnly(ArrayList) ReadOnly(ArrayList)

읽기 전용 ArrayList 래퍼를 반환합니다.Returns a read-only ArrayList wrapper.

public:
 static System::Collections::ArrayList ^ ReadOnly(System::Collections::ArrayList ^ list);
public static System.Collections.ArrayList ReadOnly (System.Collections.ArrayList list);
static member ReadOnly : System.Collections.ArrayList -> System.Collections.ArrayList
Public Shared Function ReadOnly (list As ArrayList) As ArrayList

매개 변수

list
ArrayList ArrayList ArrayList ArrayList

래핑할 ArrayList입니다.The ArrayList to wrap.

반환

list 주변의 읽기 전용 ArrayList 래퍼입니다.A read-only ArrayList wrapper around list.

예외

예제

다음 코드 예제에는 읽기 전용 래퍼를 만드는 방법을 보여 줍니다는 ArrayList 여부를 확인 하는 방법과 ArrayList 읽기 전용인 경우.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.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

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

*/

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

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

설명

수정 하지 못하게 하려면 list에 노출 list 이 래퍼를 사용할 때만 합니다.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.

이 방법은 O(1) 작업에 설명 합니다.This method is an O(1) operation.

추가 정보

ReadOnly(IList) ReadOnly(IList) ReadOnly(IList) ReadOnly(IList)

읽기 전용 IList 래퍼를 반환합니다.Returns a read-only IList wrapper.

public:
 static System::Collections::IList ^ ReadOnly(System::Collections::IList ^ list);
public static System.Collections.IList ReadOnly (System.Collections.IList list);
static member ReadOnly : System.Collections.IList -> System.Collections.IList
Public Shared Function ReadOnly (list As IList) As IList

매개 변수

list
IList IList IList IList

래핑할 IList입니다.The IList to wrap.

반환

list 주변의 읽기 전용 IList 래퍼입니다.A read-only IList wrapper around list.

예외

설명

수정 하지 못하게 하려면 list에 노출 list 이 래퍼를 사용할 때만 합니다.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.

이 방법은 O(1) 작업에 설명 합니다.This method is an O(1) operation.

추가 정보

적용 대상