エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Array クラス

2013/12/12

配列の作成、操作、検索、および並べ替えを行うメソッドを提供します。これにより、共通言語ランタイムのすべての配列の基本クラスとして機能します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public abstract class Array : IList, 
	ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable

Array 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック プロパティIsFixedSizeArray が固定サイズかどうかを示す値を取得します。
パブリック プロパティIsReadOnlyArray が読み取り専用かどうかを示す値を取得します。
パブリック プロパティIsSynchronizedArray へのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。
パブリック プロパティLengthArray のすべての次元内の要素の総数を表す 32 ビット整数を取得します。配列内に要素がない場合はゼロです。
パブリック プロパティRankArray の 0 から始まるランク (次元数) を取得します。
パブリック プロパティSyncRootArray へのアクセスを同期するために使用できるオブジェクトを取得します。
このページのトップへ

  名前説明
パブリック メソッド静的メンバーAsReadOnly<T>指定した配列をラップする読み取り専用のラッパーを作成します。
パブリック メソッド静的メンバーBinarySearch(Array, Object)1 次元の並べ替え済み Array の各要素および指定したオブジェクトによって実装されている IComparable インターフェイスを使用して、その Array 全体の中から特定の要素を検索します。
パブリック メソッド静的メンバーBinarySearch(Array, Object, IComparer)指定した IComparer インターフェイスを使用して、1 次元の並べ替え済み Array 全体の中から値を検索します。
パブリック メソッド静的メンバーBinarySearch(Array, Int32, Int32, Object)1 次元の並べ替え済み Array の各要素および指定した値によって実装されている IComparable インターフェイスを使用して、その Array の要素範囲の中から値を検索します。
パブリック メソッド静的メンバーBinarySearch(Array, Int32, Int32, Object, IComparer)指定した IComparer インターフェイスを使用して、1 次元の並べ替え済み Array 要素範囲の中から値を検索します。
パブリック メソッド静的メンバーBinarySearch<T>(T[], T)1 次元の並べ替え済み Array の各要素および指定したオブジェクトによって実装されている IComparable<T> ジェネリック インターフェイスを使用して、その Array 全体の中から特定の要素を検索します。
パブリック メソッド静的メンバーBinarySearch<T>(T[], T, IComparer<T>)指定した IComparer<T> ジェネリック インターフェイスを使用して、1 次元の並べ替え済み Array 全体の中から値を検索します。
パブリック メソッド静的メンバーBinarySearch<T>(T[], Int32, Int32, T)1 次元の並べ替え済み Array の各要素および指定した値によって実装されている IComparable<T> ジェネリック インターフェイスを使用して、その Array 要素範囲の中から値を検索します。
パブリック メソッド静的メンバーBinarySearch<T>(T[], Int32, Int32, T, IComparer<T>)指定した IComparer<T> ジェネリック インターフェイスを使用して、1 次元の並べ替え済み Array 要素範囲の中から値を検索します。
パブリック メソッド静的メンバーClearArray 内の要素の範囲を、要素の型に応じて、ゼロ、false、または null に設定します。
パブリック メソッドCloneArray の簡易コピーを作成します。
パブリック メソッド静的メンバーConstrainedCopy指定したコピー元インデックスを開始位置として Array から要素の範囲をコピーし、指定したコピー先インデックスを開始位置として他の Array にそれらの要素を貼り付けます。コピーが完全に成功しない限り、変更は一切適用されません。
パブリック メソッド静的メンバーCopy(Array, Array, Int32)最初の要素を開始位置として Array から要素の範囲をコピーし、最初の要素を開始位置として他の Array にそれらの要素を貼り付けます。長さは 32 ビット整数値として指定します。
パブリック メソッド静的メンバーCopy(Array, Int32, Array, Int32, Int32)指定したコピー元インデックスを開始位置として Array から要素の範囲をコピーし、指定したコピー先インデックスを開始位置として他の Array にそれらの要素を貼り付けます。長さとインデックスは、32 ビット整数として指定します。
パブリック メソッドCopyTo現在の 1 次元 Array のすべての要素を、指定した 1 次元 ArrayArray の指定したコピー先インデックスを開始位置としてコピーします。インデックスは 32 ビット整数値として指定します。
パブリック メソッド静的メンバーCreateInstance(Type, Int32)Type と長さを指定して、0 から始まるインデックス番号を持つ 1 次元の Array を作成します。
パブリック メソッド静的メンバーCreateInstance(Type, Int32[])Type と次元の長さを指定して、0 から始まるインデックス番号を持つ多次元の Array を作成します。次元の長さは、32 ビット整数の配列で指定します。
パブリック メソッド静的メンバーCreateInstance(Type, Int32[], Int32[])Type と次元の長さを指定して、下限を持つ多次元の Array を作成します。
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド静的メンバーExists<T>指定された配列に、指定された述語によって定義された条件と一致する要素が含まれているかどうかを判断します。
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッド静的メンバーFind<T>指定された述語によって定義された条件と一致する要素を検索し、Array 全体の中で最もインデックス番号の小さい要素を返します。
パブリック メソッド静的メンバーFindAll<T>指定された述語によって定義された条件と一致するすべての要素を取得します。
パブリック メソッド静的メンバーFindIndex<T>(T[], Predicate<T>)指定された述語によって定義された条件と一致する要素を、Array 全体を対象に検索し、最もインデックス番号の小さい要素の 0 から始まるインデックスを返します。
パブリック メソッド静的メンバーFindIndex<T>(T[], Int32, Predicate<T>)指定された述語によって定義された条件と一致する要素を、Array の指定されたインデックスから、最後の要素までを範囲として検索し、最もインデックス番号の小さい要素の 0 から始まるインデックスを返します。
パブリック メソッド静的メンバーFindIndex<T>(T[], Int32, Int32, Predicate<T>)指定された述語によって定義された条件と一致する要素を、Array の指定されたインデックスから、指定された要素数を範囲として検索し、最もインデックス番号の小さい要素の 0 から始まるインデックスを返します。
パブリック メソッド静的メンバーFindLast<T>指定された述語によって定義された条件と一致する要素を、Array 全体を対象に検索し、最もインデックス番号の大きい要素を返します。
パブリック メソッド静的メンバーFindLastIndex<T>(T[], Predicate<T>)指定された述語によって定義された条件と一致する要素を、Array 全体を対象に検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。
パブリック メソッド静的メンバーFindLastIndex<T>(T[], Int32, Predicate<T>)指定された述語によって定義された条件と一致する要素を、Array の先頭の要素から、指定されたインデックス位置までを範囲として検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。
パブリック メソッド静的メンバーFindLastIndex<T>(T[], Int32, Int32, Predicate<T>)指定された述語によって定義された条件と一致する要素を、Array の指定されたインデックス位置から、指定された要素数までを範囲として検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します。
パブリック メソッド静的メンバーForEach<T>指定された配列内の各要素に対して、指定された処理を実行します。
パブリック メソッドGetEnumeratorArrayIEnumerator を返します。
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetLengthArray の指定した次元にある要素の数を表す 32 ビット整数を取得します。
パブリック メソッドGetLowerBoundArray 内の指定した次元の下限を取得します。
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドGetUpperBoundArray 内の指定した次元の上限を取得します。
パブリック メソッドGetValue(Int32)1 次元 Array 内の指定した位置にある値を取得します。インデックスは 32 ビット整数値として指定します。
パブリック メソッドGetValue(Int32[])多次元 Array 内の指定した位置にある値を取得します。インデックスは 32 ビット整数値の配列として指定します。
パブリック メソッド静的メンバーIndexOf(Array, Object)指定したオブジェクトを検索し、1 次元の Array 全体でそのオブジェクトが最初に見つかった位置のインデックス番号を返します。
パブリック メソッド静的メンバーIndexOf(Array, Object, Int32)指定されたオブジェクトを、1 次元 Array の指定されたインデックスから最後の要素までを範囲として検索し、インデックス番号の最も小さい要素のインデックス番号を返します。
パブリック メソッド静的メンバーIndexOf(Array, Object, Int32, Int32)指定したオブジェクトを、指定したインデックス位置から、指定した要素数を範囲とする 1 次元 Array 要素の範囲内で検索し、最もインデックス番号の小さい要素のインデックス番号を返します。
パブリック メソッド静的メンバーIndexOf<T>(T[], T)Array 全体を対象に指定したオブジェクトを検索し、インデックス番号の最も小さい要素のインデックスを返します。
パブリック メソッド静的メンバーIndexOf<T>(T[], T, Int32)指定したオブジェクトを、Array の指定したインデックス位置から最後の要素までを範囲として検索し、最もインデックス番号の小さい要素のインデックス番号を返します。
パブリック メソッド静的メンバーIndexOf<T>(T[], T, Int32, Int32)指定したオブジェクトを、Array の指定したインデックスから指定した要素数を範囲として検索し、インデックス番号の最も小さい要素のインデックス番号を返します。
パブリック メソッドInitialize値型の既定のコンストラクターを呼び出して、この値型 Array の各要素を初期化します。
パブリック メソッド静的メンバーLastIndexOf(Array, Object)指定したオブジェクトを検索し、1 次元の Array 全体でそのオブジェクトが最後に見つかった位置のインデックス番号を返します。
パブリック メソッド静的メンバーLastIndexOf(Array, Object, Int32)1 次元 Array の先頭の要素から、指定したインデックスまでを対象に指定したオブジェクトを検索し、インデックス番号の最も大きい要素のインデックス番号を返します。
パブリック メソッド静的メンバーLastIndexOf(Array, Object, Int32, Int32)指定したオブジェクトを、1 次元 Array の指定したインデックス位置から、指定した要素数を範囲として検索し、インデックス番号の最も大きい要素のインデックス番号を返します。
パブリック メソッド静的メンバーLastIndexOf<T>(T[], T)指定したオブジェクトを Array 全体を対象に検索し、インデックス番号の最も大きい要素のインデックスを返します。
パブリック メソッド静的メンバーLastIndexOf<T>(T[], T, Int32)指定したオブジェクトを、Array の先頭の要素から、指定されたインデックス位置までを範囲として検索し、インデックス番号の最も大きい要素のインデックス番号を返します。
パブリック メソッド静的メンバーLastIndexOf<T>(T[], T, Int32, Int32)指定したオブジェクトを、Array の指定したインデックス位置から、指定した要素数を範囲として検索し、インデックス番号の最も大きい要素のインデックス番号を返します。
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッド静的メンバーResize<T>配列の要素数を、指定した新しいサイズに変更します。
パブリック メソッド静的メンバーReverse(Array)1 次元の Array 内全体の要素のシーケンスを反転させます。
パブリック メソッド静的メンバーReverse(Array, Int32, Int32)1 次元 Array 内の要素範囲の並び順を反転させます。
パブリック メソッドSetValue(Object, Int32)1 次元 Array 内の指定した位置にある要素に値を設定します。インデックスは 32 ビット整数値として指定します。
パブリック メソッドSetValue(Object, Int32[])多次元 Array 内の指定した位置にある要素に値を設定します。インデックスは 32 ビット整数値の配列として指定します。
パブリック メソッド静的メンバーSort(Array)Array の各要素によって実装された IComparable を使用して、1 次元 Array 全体の要素を並べ替えます。
パブリック メソッド静的メンバーSort(Array, IComparer)1 次元 Array 内の要素を、指定した IComparer を使用して並べ替えます。
パブリック メソッド静的メンバーSort(Array, Array, IComparer)2 つの 1 次元 Array オブジェクト (一方のオブジェクトがキーを格納し、他方のオブジェクトがそれらに対応する項目を格納する) を、最初の Array 内のキーに基づき、指定した IComparer を使用して並べ替えます。
パブリック メソッド静的メンバーSort(Array, Int32, Int32)Array の各要素によって実装された IComparable を使用して、1 次元 Array の要素範囲を並べ替えます。
パブリック メソッド静的メンバーSort(Array, Int32, Int32, IComparer)1 次元 Array の範囲内の要素範囲を、指定した IComparer を使用して並べ替えます。
パブリック メソッド静的メンバーSort(Array, Array, Int32, Int32, IComparer)2 つの 1 次元 Array オブジェクト (一方のオブジェクトがキーを格納し、他方のオブジェクトがそれらに対応する項目を格納する) 内の要素範囲を、最初の Array 内のキーに基づき、指定した IComparer を使用して並べ替えます。
パブリック メソッド静的メンバーSort<T>(T[])Array の各要素によって実装された IComparable<T> ジェネリック インターフェイスを使用して、Array 全体の要素を並べ替えます。
パブリック メソッド静的メンバーSort<T>(T[], IComparer<T>)Array 内の要素を、指定した IComparer<T> ジェネリック インターフェイスを使用して並べ替えます。
パブリック メソッド静的メンバーSort<T>(T[], Comparison<T>)Array 内の要素を、指定した Comparison<T> を使用して並べ替えます。
パブリック メソッド静的メンバーSort<T>(T[], Int32, Int32)Array の各要素によって実装された IComparable<T> ジェネリック インターフェイスを使用して、Array の要素範囲を並べ替えます。
パブリック メソッド静的メンバーSort<T>(T[], Int32, Int32, IComparer<T>)指定した IComparer<T> ジェネリック インターフェイスを使用して、Array 内の要素範囲を並べ替えます。
パブリック メソッド静的メンバーSort<TKey, TValue>(TKey[], TValue[])2 つの Array オブジェクト (一方のオブジェクトがキーを格納し、他方のオブジェクトがそれらに対応する項目を格納する) を、最初の Array 内のキーに基づき、各キーによって実装された IComparable<T> ジェネリック インターフェイスを使用して並べ替えます。
パブリック メソッド静的メンバーSort<TKey, TValue>(TKey[], TValue[], IComparer<TKey>)2 つの Array オブジェクト (一方のオブジェクトがキーを格納し、他方のオブジェクトがそれらに対応する項目を格納する) を、最初の Array 内のキーに基づき、指定した IComparer<T> ジェネリック インターフェイスを使用して並べ替えます。
パブリック メソッド静的メンバーSort<TKey, TValue>(TKey[], TValue[], Int32, Int32)2 つの Array オブジェクト (一方のオブジェクトがキーを格納し、他方のオブジェクトがそれらに対応する項目を格納する) の要素範囲を、最初の Array 内のキーに基づき、各キーによって実装された IComparable<T> ジェネリック インターフェイスを使用して並べ替えます。
パブリック メソッド静的メンバーSort<TKey, TValue>(TKey[], TValue[], Int32, Int32, IComparer<TKey>)2 つの Array オブジェクト (一方のオブジェクトがキーを格納し、他方のオブジェクトがそれらに対応する項目を格納する) 内の要素範囲を、最初の Array 内のキーに基づき、指定した IComparer<T> ジェネリック インターフェイスを使用して並べ替えます。
パブリック メソッドToString現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
パブリック メソッド静的メンバーTrueForAll<T>配列内のすべての要素が、指定された述語によって定義された条件と一致するかどうかを調べます。
このページのトップへ

  名前説明
パブリック拡張メソッドAsQueryableIEnumerableIQueryable に変換します。 (Queryable によって定義されています。)
パブリック拡張メソッドCast<TResult>IEnumerable の要素を、指定した型に変換します。 (Enumerable によって定義されています。)
パブリック拡張メソッドOfType<TResult>指定された型に基づいて IEnumerable の要素をフィルター処理します。 (Enumerable によって定義されています。)
このページのトップへ

  名前説明
明示的なインターフェイスの実装プライベート プロパティICollection.CountArray に格納されている要素の数を取得します。
明示的なインターフェイスの実装プライベート メソッドIList.AddIList.Add を実装します。常に NotSupportedException をスローします。
明示的なインターフェイスの実装プライベート メソッドIList.ClearArray 内のすべての要素を、要素の型に応じて、0、false、または null に設定します。
明示的なインターフェイスの実装プライベート メソッドIList.Containsある要素が Array 内に存在するかどうかを判断します。
明示的なインターフェイスの実装プライベート メソッドIList.IndexOf指定したオブジェクトを検索し、現在の 1 次元インスタンス内でそのオブジェクトが最初に見つかった位置のインデックス番号を返します。
明示的なインターフェイスの実装プライベート メソッドIList.InsertIList.Insert を実装します。常に NotSupportedException をスローします。
明示的なインターフェイスの実装プライベート プロパティIList.Item指定したインデックスの位置にある要素を取得または設定します。
明示的なインターフェイスの実装プライベート メソッドIList.RemoveIList.Remove を実装します。常に NotSupportedException をスローします。
明示的なインターフェイスの実装プライベート メソッドIList.RemoveAtIList.RemoveAt を実装します。常に NotSupportedException をスローします。
明示的なインターフェイスの実装プライベート メソッドIStructuralComparable.CompareTo並び替え順序で、現在のコレクション オブジェクトを別のオブジェクトより前にするか、同じ位置にするか、後にするかを判別します。
明示的なインターフェイスの実装プライベート メソッドIStructuralEquatable.Equalsオブジェクトが現在のインスタンスと等しいかどうかを判断します。
明示的なインターフェイスの実装プライベート メソッドIStructuralEquatable.GetHashCode現在のインスタンスのハッシュ コードを返します。
このページのトップへ

Array クラスは、配列をサポートする言語による各実装の基本クラスです。ただし、Array クラスから明示的に派生クラスを作成できるのは、システムとコンパイラだけです。開発者は、言語によって提供される配列構造を使用する必要があります。

要素は Array 内の値です。Array の長さは、その配列に含まれる要素の合計数ですArray のランクは、Array の次元数です。Array の次元の下限は、Array のその次元の開始インデックスです。多次元 Array では次元ごとに下限が異なることがあります。

Type オブジェクトは、配列型宣言の情報を提供します。配列型が同じである Array オブジェクトは、同じ Type オブジェクトを共有します。

配列を Array 型にキャストした場合に、結果が配列ではなくオブジェクトになることもあるため、Type.IsArray および Type.GetElementType は、Array について予測される結果を返さない場合があります。つまり、typeof(System.Array).IsArrayfalse を返し、typeof(System.Array).GetElementTypenull を返します。

ほとんどのクラスとは異なり、Array は、遅延バインディングによるアクセスを可能にするために、パブリック コンストラクターではなく CreateInstance メソッドを用意しています。

Array.Copy メソッドでは、同じ型の配列間だけでなく、異なる型の標準配列間でも要素がコピーされます。つまり、自動的に型キャストが処理されます。

Array が並べ替えられることは保証されていません。Array を並べ替える必要のある操作 (BinarySearch など) を実行する前に、Array を並べ替える必要があります。

Array.Copy メソッドを使用して、整数型の配列と Object 型の配列間で要素をコピーする方法を次のコード例で示します。

メモメモ:

このコード例をコンパイルして実行する方法の詳細については、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
public class Example
{
    public static void Demo(System.Windows.Controls.TextBlock outputBlock)
    {

        // Creates and initializes a new integer array and a new Object array.
        int[] myIntArray = new int[5] { 1, 2, 3, 4, 5 };
        Object[] myObjArray = new Object[5] { 26, 27, 28, 29, 30 };

        // Prints the initial values of both arrays.
        outputBlock.Text += String.Format("Initially:") + "\n";
        outputBlock.Text += "integer array:";
        PrintValues(outputBlock, myIntArray);
        outputBlock.Text += "Object array: ";
        PrintValues(outputBlock, myObjArray);

        // Copies the first two elements from the integer array to the Object array.
        Array.Copy(myIntArray, myObjArray, 2);

        // Prints the values of the modified arrays.
        outputBlock.Text += String.Format("\nAfter copying the first two elements of the integer array to the Object array,") + "\n";
        outputBlock.Text += "integer array:";
        PrintValues(outputBlock, myIntArray);
        outputBlock.Text += "Object array: ";
        PrintValues(outputBlock, myObjArray);

        // Copies the last two elements from the Object array to the integer array.
        Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2);

        // Prints the values of the modified arrays.
        outputBlock.Text += String.Format("\nAfter copying the last two elements of the Object array to the integer array,") + "\n";
        outputBlock.Text += "integer array:";
        PrintValues(outputBlock, myIntArray);
        outputBlock.Text += "Object array: ";
        PrintValues(outputBlock, myObjArray);
    }


    public static void PrintValues(System.Windows.Controls.TextBlock outputBlock, Object[] myArr)
    {
        foreach (Object i in myArr)
        {
            outputBlock.Text += String.Format("   {0}", i);
        }
        outputBlock.Text += "\n";
    }

    public static void PrintValues(System.Windows.Controls.TextBlock outputBlock, int[] myArr)
    {
        foreach (int i in myArr)
        {
            outputBlock.Text += String.Format("   {0}", i);
        }
        outputBlock.Text += "\n";
    }
    /* 
    This code produces the following output.

    Initially,
    integer array:  1       2       3       4       5
    Object array:   26      27      28      29      30

    After copying the first two elements of the integer array to the Object array,
    integer array:  1       2       3       4       5
    Object array:   1       2       28      29      30

    After copying the last two elements of the Object array to the integer array,
    integer array:  1       2       3       29      30
    Object array:   1       2       28      29      30
    */
}



Array を作成および初期化し、そのプロパティと要素を表示するコード例を次に示します。


public class Example2
{

    public static void Demo(System.Windows.Controls.TextBlock outputBlock)
    {
        // Creates and initializes a new three-dimensional Array of type Int32.
        Array myArr = Array.CreateInstance(typeof(Int32), 2, 3, 4);
        for (int i = myArr.GetLowerBound(0); i <= myArr.GetUpperBound(0); i++)
            for (int j = myArr.GetLowerBound(1); j <= myArr.GetUpperBound(1); j++)
                for (int k = myArr.GetLowerBound(2); k <= myArr.GetUpperBound(2); k++)
                {
                    myArr.SetValue((i * 100) + (j * 10) + k, i, j, k);
                }

        // Displays the properties of the Array.
        outputBlock.Text += String.Format("The Array has {0} dimension(s) and a total of {1} elements.", myArr.Rank, myArr.Length) + "\n";
        outputBlock.Text += "  Length  Lower  Upper" + "\n";
        for (int i = 0; i < myArr.Rank; i++)
        {
            outputBlock.Text += String.Format("{0}:  {1}", i, myArr.GetLength(i));
            outputBlock.Text += String.Format("  {0}  {1}", myArr.GetLowerBound(i), myArr.GetUpperBound(i)) + "\n";
        }

        // Displays the contents of the Array.
        outputBlock.Text += "The Array contains the following values:" + "\n";
        PrintValues(outputBlock, myArr);
    }


    public static void PrintValues(System.Windows.Controls.TextBlock outputBlock, Array myArr)
    {
        System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
        int i = 0;
        int cols = myArr.GetLength(myArr.Rank - 1);
        while (myEnumerator.MoveNext())
        {
            if (i < cols)
            {
                i++;
            }
            else
            {
                outputBlock.Text += "\n";
                i = 1;
            }
            outputBlock.Text += String.Format("   {0}", myEnumerator.Current);
        }
        outputBlock.Text += "\n";
    }
}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型の public static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

この実装は、Array 用の同期された (スレッド セーフな) ラッパーは提供しませんが、Array に基づく .NET Framework クラスでは、SyncRoot プロパティを使用して、独自にコレクションを同期させることができます。

コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチする方法のいずれかを実行できます。

表示:
© 2015 Microsoft