ArrayList.IsReadOnly-Eigenschaft
Ruft einen Wert ab, der angibt, ob ArrayList schreibgeschützt ist.
Namespace: System.Collections
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Overridable ReadOnly Property IsReadOnly As Boolean
'Usage
Dim instance As ArrayList
Dim value As Boolean
value = instance.IsReadOnly
public virtual bool IsReadOnly { get; }
public:
virtual property bool IsReadOnly {
bool get ();
}
/** @property */
public boolean get_IsReadOnly ()
public function get IsReadOnly () : boolean
Eigenschaftenwert
true, wenn ArrayList schreibgeschützt ist, andernfalls false. Der Standardwert ist false.
Hinweise
Eine schreibgeschützte Auflistung gestattet nach dem Erstellen der Auflistung weder das Hinzufügen noch das Ändern oder Entfernen von Elementen.
Eine schreibgeschützte Auflistung ist eine Auflistung mit einem Wrapper, der das Ändern der Auflistung verhindert. Daher werden Änderungen an der zugrunde liegenden Auflistung auch in der schreibgeschützten Auflistung dargestellt.
Das Abrufen des Werts dieser Eigenschaft ist eine O(1)-Operation.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie ein schreibgeschützter Wrapper um eine ArrayList erstellt wird und wie bestimmt wird, ob eine ArrayList schreibgeschützt ist.
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
*/
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
ArrayList-Klasse
ArrayList-Member
System.Collections-Namespace
ReadOnly