ArrayList.ReadOnly 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回唯讀的清單包裝函式。
多載
ReadOnly(ArrayList) |
傳回唯讀的 ArrayList 包裝函式。 |
ReadOnly(IList) |
傳回唯讀的 IList 包裝函式。 |
ReadOnly(ArrayList)
- 來源:
- 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 包裝函式。
例外狀況
list
為 null
。
範例
下列程式代碼範例示範如何在 周圍 ArrayList 建立只讀包裝函式,以及如何判斷 是否 ArrayList 為唯讀。
#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
備註
若要防止對 list
進行任何修改,請只透過這個包裝函式公開 list
。
只讀的集合只是具有防止修改集合之包裝函式的集合。 如果對基礎集合進行變更,只讀集合會反映這些變更。
這個方法是作業 O(1)
。
另請參閱
適用於
ReadOnly(IList)
- 來源:
- 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 包裝函式。
例外狀況
list
為 null
。
備註
若要防止對 list
進行任何修改,請只透過這個包裝函式公開 list
。
只讀的集合只是具有防止修改集合之包裝函式的集合。 如果對基礎集合進行變更,只讀集合會反映這些變更。
這個方法是作業 O(1)
。