ArrayList.ReadOnly Methode
Definition
Gibt einen schreibgeschützten Listenwrapper zurück.Returns a list wrapper that is read-only.
Überlädt
ReadOnly(ArrayList) |
Gibt einen schreibgeschützten ArrayList-Wrapper zurück.Returns a read-only ArrayList wrapper. |
ReadOnly(IList) |
Gibt einen schreibgeschützten IList-Wrapper zurück.Returns a read-only IList wrapper. |
ReadOnly(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
Parameter
Gibt zurück
Ein schreibgeschützter ArrayList-Wrapper um list
.A read-only ArrayList wrapper around list
.
Ausnahmen
list
ist null
.list
is null
.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie ein Schreib geschützter Wrapper um einen erstellt ArrayList wird und wie bestimmt wird, ob eine schreibgeschützt ArrayList ist.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
'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
Hinweise
Um Änderungen an zu verhindern list
, machen Sie list
nur über diesen Wrapper verfügbar.To prevent any modifications to list
, expose list
only through this wrapper.
Eine Auflistung, die schreibgeschützt ist, ist einfach eine Auflistung mit einem Wrapper, der das Ändern der Auflistung verhindert.A collection that is read-only is simply a collection with a wrapper that prevents modifying the collection. Wenn Änderungen an der zugrunde liegenden Auflistung vorgenommen werden, reflektiert die schreibgeschützte Auflistung diese Änderungen.If changes are made to the underlying collection, the read-only collection reflects those changes.
Diese Methode ist ein O(1)
Vorgang.This method is an O(1)
operation.
Siehe auch
Gilt für:
ReadOnly(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
Parameter
Gibt zurück
Ein schreibgeschützter IList-Wrapper um list
.A read-only IList wrapper around list
.
Ausnahmen
list
ist null
.list
is null
.
Hinweise
Um Änderungen an zu verhindern list
, machen Sie list
nur über diesen Wrapper verfügbar.To prevent any modifications to list
, expose list
only through this wrapper.
Eine Auflistung, die schreibgeschützt ist, ist einfach eine Auflistung mit einem Wrapper, der das Ändern der Auflistung verhindert.A collection that is read-only is simply a collection with a wrapper that prevents modifying the collection. Wenn Änderungen an der zugrunde liegenden Auflistung vorgenommen werden, reflektiert die schreibgeschützte Auflistung diese Änderungen.If changes are made to the underlying collection, the read-only collection reflects those changes.
Diese Methode ist ein O(1)
Vorgang.This method is an O(1)
operation.