Array.AsReadOnly ジェネリック メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Dim array As T() Dim returnValue As ReadOnlyCollection(Of T) returnValue = Array.AsReadOnly(array)
パラメータ
戻り値
指定した配列をラップする読み取り専用の ReadOnlyCollection ラッパー。


配列が変更されないようにするには、配列を公開するときに必ずこのラッパーを使用するようにします。
読み取り専用のコレクションは、コレクションの変更を防ぐラッパーがコレクションに組み込まれているに過ぎません。したがって、基になっているコレクションで変更が加えられた場合、読み取り専用のコレクションでもその内容が反映されます。

次の例では、配列を読み取り専用の ReadOnlyCollection でラップしています。
Imports System Imports System.Collections.Generic Public Class SamplesArray Public Shared Sub Main() ' Create and initialize a new string array. Dim myArr As String() = {"The", "quick", "brown", "fox"} ' Display the values of the array. Console.WriteLine("The string array initially contains the following values:") PrintIndexAndValues(myArr) ' Create a read-only IList wrapper around the array. Dim myList As IList(Of String) = Array.AsReadOnly(myArr) ' ' Display the values of the read-only IList. Console.WriteLine("The read-only IList contains the following values:") PrintIndexAndValues(myList) ' Attempt to change a value through the wrapper. Try myList(3) = "CAT" Catch e As NotSupportedException Console.WriteLine("{0} - {1}", e.GetType(), e.Message) Console.WriteLine() End Try ' Change a value in the original array. myArr(2) = "RED" ' Display the values of the array. Console.WriteLine("After changing the third element, the string array contains the following values:") PrintIndexAndValues(myArr) ' Display the values of the read-only IList. Console.WriteLine("After changing the third element, the read-only IList contains the following values:") PrintIndexAndValues(myList) End Sub 'Main Overloads Public Shared Sub PrintIndexAndValues(myArr() As String) Dim i As Integer For i = 0 To myArr.Length - 1 Console.WriteLine(" [{0}] : {1}", i, myArr(i)) Next i Console.WriteLine() End Sub 'PrintIndexAndValues Overloads Public Shared Sub PrintIndexAndValues(myList As IList(Of String)) Dim i As Integer For i = 0 To myList.Count - 1 Console.WriteLine(" [{0}] : {1}", i, myList(i)) Next i Console.WriteLine() End Sub 'PrintIndexAndValues End Class 'SamplesArray 'This code produces the following output. ' 'The string array initially contains the following values: ' [0] : The ' [1] : quick ' [2] : brown ' [3] : fox ' 'The read-only IList contains the following values: ' [0] : The ' [1] : quick ' [2] : brown ' [3] : fox ' 'System.NotSupportedException - Collection is read-only. ' 'After changing the third element, the string array contains the following values: ' [0] : The ' [1] : quick ' [2] : RED ' [3] : fox ' 'After changing the third element, the read-only IList contains the following values: ' [0] : The ' [1] : quick ' [2] : RED ' [3] : fox
using System; using System.Collections.Generic; public class SamplesArray { public static void Main() { // Create and initialize a new string array. String[] myArr = { "The", "quick", "brown", "fox" }; // Display the values of the array. Console.WriteLine( "The string array initially contains the following values:" ); PrintIndexAndValues( myArr ); // Create a read-only IList wrapper around the array. IList<String> myList = Array.AsReadOnly( myArr ); // Display the values of the read-only IList. Console.WriteLine( "The read-only IList contains the following values:" ); PrintIndexAndValues( myList ); // Attempt to change a value through the wrapper. try { myList[3] = "CAT"; } catch ( NotSupportedException e ) { Console.WriteLine( "{0} - {1}", e.GetType(), e.Message ); Console.WriteLine(); } // Change a value in the original array. myArr[2] = "RED"; // Display the values of the array. Console.WriteLine( "After changing the third element, the string array contains the following values:" ); PrintIndexAndValues( myArr ); // Display the values of the read-only IList. Console.WriteLine( "After changing the third element, the read-only IList contains the following values:" ); PrintIndexAndValues( myList ); } public static void PrintIndexAndValues( String[] myArr ) { for ( int i = 0; i < myArr.Length; i++ ) { Console.WriteLine( " [{0}] : {1}", i, myArr[i] ); } Console.WriteLine(); } public static void PrintIndexAndValues( IList<String> myList ) { for ( int i = 0; i < myList.Count; i++ ) { Console.WriteLine( " [{0}] : {1}", i, myList[i] ); } Console.WriteLine(); } } /* This code produces the following output. The string array initially contains the following values: [0] : The [1] : quick [2] : brown [3] : fox The read-only IList contains the following values: [0] : The [1] : quick [2] : brown [3] : fox System.NotSupportedException - Collection is read-only. After changing the third element, the string array contains the following values: [0] : The [1] : quick [2] : RED [3] : fox After changing the third element, the read-only IList contains the following values: [0] : The [1] : quick [2] : RED [3] : fox */
using namespace System; using namespace System::Collections::Generic; namespace Samples { public ref class SamplesArray { public: static void Work() { // Create and initialize a new string array. array <String^>^ textArray = {"The", "quick", "brown", "fox"}; // Display the values of the array. Console::WriteLine("The string array initially contains " "the following values:"); PrintIndexAndValues(textArray); // Create a read-only IList wrapper around the array. IList <String^>^ textList = Array::AsReadOnly(textArray); // Display the values of the read-only IList. Console::WriteLine("The read-only IList contains " "the following values:"); PrintIndexAndValues(textList); // Attempt to change a value through the wrapper. try { textList[3] = "CAT"; } catch (NotSupportedException^ ex) { Console::WriteLine("{0} - {1}", ex->GetType(), ex->Message); Console::WriteLine(); } // Change a value in the original array. textArray[2] = "RED"; // Display the values of the array. Console::WriteLine("After changing the third element," "the string array contains the following values:"); PrintIndexAndValues(textArray); // Display the values of the read-only IList. Console::WriteLine("After changing the third element, the" " read-only IList contains the following values:"); PrintIndexAndValues(textList); } static void PrintIndexAndValues(array<String^>^ textArray) { for (int i = 0; i < textArray->Length; i++) { Console::WriteLine(" [{0}] : {1}", i, textArray[i]); } Console::WriteLine(); } static void PrintIndexAndValues(IList<String^>^ textList) { for (int i = 0; i < textList->Count; i++) { Console::WriteLine(" [{0}] : {1}", i, textList[i]); } Console::WriteLine(); } }; } int main() { Samples::SamplesArray::Work(); } /* This code produces the following output. The string array initially contains the following values: [0] : The [1] : quick [2] : brown [3] : fox The read-only IList contains the following values: [0] : The [1] : quick [2] : brown [3] : fox System.NotSupportedException - Collection is read-only. After changing the third element, the string array contains the following values: [0] : The [1] : quick [2] : RED [3] : fox After changing the third element, the read-only IList contains the following values: [0] : The [1] : quick [2] : RED [3] : fox */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- Array.AsReadOnly ジェネリック メソッドのページへのリンク