Язык

ArrayList.ReadOnly Метод

Определение

Возвращает оболочку списка, доступную только для чтения.

Перегрузки

Имя Описание
ReadOnly(ArrayList)

Возвращает оболочку только для ArrayList чтения.

ReadOnly(IList)

Возвращает оболочку только для IList чтения.

ReadOnly(ArrayList)

Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs

Возвращает оболочку только для ArrayList чтения.

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только для list чтения.

Исключения

list равно null.

Примеры

В следующем примере кода показано, как создать оболочку, доступную только для ArrayList чтения, и как определить, доступна ли ArrayList только для чтения.

 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


'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 только через эту оболочку.

Коллекция, доступная только для чтения, — это просто коллекция с оболочкой, которая предотвращает изменение коллекции. Если изменения вносятся в базовую коллекцию, коллекция только для чтения отражает эти изменения.

Этот метод является операцией O(1) .

См. также раздел

Применяется к

ReadOnly(IList)

Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs
Исходный код:
ArrayList.cs

Возвращает оболочку только для IList чтения.

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только для list чтения.

Исключения

list равно null.

Комментарии

Чтобы предотвратить любые изменения list, предоставляются list только через эту оболочку.

Коллекция, доступная только для чтения, — это просто коллекция с оболочкой, которая предотвращает изменение коллекции. Если изменения вносятся в базовую коллекцию, коллекция только для чтения отражает эти изменения.

Этот метод является операцией O(1) .

См. также раздел

Применяется к