ReadOnlyCollection<T> 클래스

정의

제네릭 읽기 전용 컬렉션의 기본 클래스를 제공합니다.Provides the base class for a generic read-only collection.

generic <typename T>
public ref class ReadOnlyCollection : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IList<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::IReadOnlyList<T>, System::Collections::IList
[System.Runtime.InteropServices.ComVisible(false)]
[System.Serializable]
public class ReadOnlyCollection<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IList<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.IReadOnlyList<T>, System.Collections.IList
type ReadOnlyCollection<'T> = class
    interface IList<'T>
    interface IList
    interface IReadOnlyList<'T>
    interface ICollection<'T>
    interface seq<'T>
    interface IEnumerable
    interface ICollection
    interface IReadOnlyCollection<'T>
Public Class ReadOnlyCollection(Of T)
Implements ICollection(Of T), IEnumerable(Of T), IList, IList(Of T), IReadOnlyCollection(Of T), IReadOnlyList(Of T)

형식 매개 변수

T

컬렉션에 있는 요소의 형식입니다.The type of elements in the collection.

상속
ReadOnlyCollection<T>
파생
특성
구현

예제

다음 코드 예제에서는의 몇몇 구성원이 ReadOnlyCollection<T> 클래스입니다.The following code example demonstrates several members of the ReadOnlyCollection<T> class. 코드 예제에서는 List<T> 의 문자열 및에서는를 추가 합니다.The code example creates a List<T> of strings and adds four dinosaur names to it. 코드 예제에서는 그런 다음에 ReadOnlyCollection<T>합니다.The code example then wraps the list in a ReadOnlyCollection<T>.

보여 주는 후는 Count, Contains, Item[Int32], 및 IList.IndexOf 멤버는 코드 예에서는 합니다 ReadOnlyCollection<T> 원본에 대 한 일 뿐 List<T> 에 새 항목을 추가 하 여는 List<T> 및 내용을 표시 합니다 ReadOnlyCollection<T>합니다.After demonstrating the Count, Contains, Item[Int32], and IList.IndexOf members, the code example shows that the ReadOnlyCollection<T> is just a wrapper for the original List<T> by adding a new item to the List<T> and displaying the contents of the ReadOnlyCollection<T>.

마지막으로, 코드 예제에서는 배열 컬렉션 보다 큰 만들고 사용 하 여 CopyTo 배열의 중간에 컬렉션의 요소를 삽입 하는 방법입니다.Finally, the code example creates an array larger than the collection and uses the CopyTo method to insert the elements of the collection into the middle of the array.

using namespace System;
using namespace System::Collections::Generic;
using namespace System::Collections::ObjectModel;

void main()
{
    List<String^>^ dinosaurs = gcnew List<String^>();

    dinosaurs->Add("Tyrannosaurus");
    dinosaurs->Add("Amargasaurus");
    dinosaurs->Add("Deinonychus");
    dinosaurs->Add("Compsognathus");

    ReadOnlyCollection<String^>^ readOnlyDinosaurs = 
        gcnew ReadOnlyCollection<String^>(dinosaurs);

    Console::WriteLine();
    for each(String^ dinosaur in readOnlyDinosaurs )
    {
        Console::WriteLine(dinosaur);
    }

    Console::WriteLine("\nCount: {0}", readOnlyDinosaurs->Count);

    Console::WriteLine("\nContains(\"Deinonychus\"): {0}", 
        readOnlyDinosaurs->Contains("Deinonychus"));

    Console::WriteLine("\nreadOnlyDinosaurs[3]: {0}", 
        readOnlyDinosaurs[3]);

    Console::WriteLine("\nIndexOf(\"Compsognathus\"): {0}", 
        readOnlyDinosaurs->IndexOf("Compsognathus"));

    Console::WriteLine("\nInsert into the wrapped List:");
    Console::WriteLine("Insert(2, \"Oviraptor\")");
    dinosaurs->Insert(2, "Oviraptor");

    Console::WriteLine();
    for each( String^ dinosaur in readOnlyDinosaurs )
    {
        Console::WriteLine(dinosaur);
    }

    array<String^>^ dinoArray = 
        gcnew array<String^>(readOnlyDinosaurs->Count + 2);
    readOnlyDinosaurs->CopyTo(dinoArray, 1);

    Console::WriteLine("\nCopied array has {0} elements:", 
        dinoArray->Length);
    for each( String^ dinosaur in dinoArray )
    {
        Console::WriteLine("\"{0}\"", dinosaur);
    }
}

/* This code example produces the following output:

Tyrannosaurus
Amargasaurus
Deinonychus
Compsognathus

Count: 4

Contains("Deinonychus"): True

readOnlyDinosaurs[3]: Compsognathus

IndexOf("Compsognathus"): 3

Insert into the wrapped List:
Insert(2, "Oviraptor")

Tyrannosaurus
Amargasaurus
Oviraptor
Deinonychus
Compsognathus

Copied array has 7 elements:
""
"Tyrannosaurus"
"Amargasaurus"
"Oviraptor"
"Deinonychus"
"Compsognathus"
""
 */
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        dinosaurs.Add("Tyrannosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Compsognathus");

        ReadOnlyCollection<string> readOnlyDinosaurs = 
            new ReadOnlyCollection<string>(dinosaurs);

        Console.WriteLine();
        foreach( string dinosaur in readOnlyDinosaurs )
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nCount: {0}", readOnlyDinosaurs.Count);

        Console.WriteLine("\nContains(\"Deinonychus\"): {0}", 
            readOnlyDinosaurs.Contains("Deinonychus"));

        Console.WriteLine("\nreadOnlyDinosaurs[3]: {0}", 
            readOnlyDinosaurs[3]);

        Console.WriteLine("\nIndexOf(\"Compsognathus\"): {0}", 
            readOnlyDinosaurs.IndexOf("Compsognathus"));

        Console.WriteLine("\nInsert into the wrapped List:");
        Console.WriteLine("Insert(2, \"Oviraptor\")");
        dinosaurs.Insert(2, "Oviraptor");

        Console.WriteLine();
        foreach( string dinosaur in readOnlyDinosaurs )
        {
            Console.WriteLine(dinosaur);
        }

        string[] dinoArray = new string[readOnlyDinosaurs.Count + 2];
        readOnlyDinosaurs.CopyTo(dinoArray, 1);

        Console.WriteLine("\nCopied array has {0} elements:", 
            dinoArray.Length);
        foreach( string dinosaur in dinoArray )
        {
            Console.WriteLine("\"{0}\"", dinosaur);
        }
    }
}

/* This code example produces the following output:

Tyrannosaurus
Amargasaurus
Deinonychus
Compsognathus

Count: 4

Contains("Deinonychus"): True

readOnlyDinosaurs[3]: Compsognathus

IndexOf("Compsognathus"): 3

Insert into the wrapped List:
Insert(2, "Oviraptor")

Tyrannosaurus
Amargasaurus
Oviraptor
Deinonychus
Compsognathus

Copied array has 7 elements:
""
"Tyrannosaurus"
"Amargasaurus"
"Oviraptor"
"Deinonychus"
"Compsognathus"
""
 */
Imports System.Collections.Generic
Imports System.Collections.ObjectModel

Public Class Example

    Public Shared Sub Main()

        Dim dinosaurs As New List(Of String)

        dinosaurs.Add("Tyrannosaurus")
        dinosaurs.Add("Amargasaurus")
        dinosaurs.Add("Deinonychus")
        dinosaurs.Add("Compsognathus")

        Dim readOnlyDinosaurs As _
            New ReadOnlyCollection(Of String)(dinosaurs)

        Console.WriteLine()
        For Each dinosaur As String In readOnlyDinosaurs
            Console.WriteLine(dinosaur)
        Next

        Console.WriteLine(vbLf & "Count: {0}", _
            readOnlyDinosaurs.Count)

        Console.WriteLine(vbLf & "Contains(""Deinonychus""): {0}", _
            readOnlyDinosaurs.Contains("Deinonychus"))

        Console.WriteLine(vbLf & _
            "readOnlyDinosaurs(3): {0}", readOnlyDinosaurs(3))

        Console.WriteLine(vbLf & "IndexOf(""Compsognathus""): {0}", _
            readOnlyDinosaurs.IndexOf("Compsognathus"))

        Console.WriteLine(vbLf & "Insert into the wrapped List:")
        Console.WriteLine("Insert(2, ""Oviraptor"")")
        dinosaurs.Insert(2, "Oviraptor")

        Console.WriteLine()
        For Each dinosaur As String In readOnlyDinosaurs
            Console.WriteLine(dinosaur)
        Next

        Dim dinoArray(readOnlyDinosaurs.Count + 1) As String
        readOnlyDinosaurs.CopyTo(dinoArray, 1)

        Console.WriteLine(vbLf & "Copied array has {0} elements:", _
            dinoArray.Length)
        For Each dinosaur As String In dinoArray
            Console.WriteLine("""{0}""", dinosaur)
        Next

   End Sub
End Class

' This code example produces the following output:
'
'Tyrannosaurus
'Amargasaurus
'Deinonychus
'Compsognathus
'
'Count: 4
'
'Contains("Deinonychus"): True
'
'readOnlyDinosaurs(3): Compsognathus
'
'IndexOf("Compsognathus"): 3
'
'Insert into the wrapped List:
'Insert(2, "Oviraptor")
'
'Tyrannosaurus
'Amargasaurus
'Oviraptor
'Deinonychus
'Compsognathus
'
'Copied array has 7 elements:
'""
'"Tyrannosaurus"
'"Amargasaurus"
'"Oviraptor"
'"Deinonychus"
'"Compsognathus"
'""

설명

인스턴스는 ReadOnlyCollection<T> 제네릭 클래스는 항상 읽기 전용입니다.An instance of the ReadOnlyCollection<T> generic class is always read-only. 읽기 전용 컬렉션은 지정 된 컬렉션을 수정 하지 못하도록 하는 래퍼 컬렉션 따라서 기본 컬렉션이 변경 되 면 읽기 전용 컬렉션에 이러한 내용을 반영 합니다.A collection that is read-only is simply a collection with a wrapper that prevents modifying the collection; therefore, if changes are made to the underlying collection, the read-only collection reflects those changes. 참조 Collection<T> 이 클래스의 수정 가능한 버전입니다.See Collection<T> for a modifiable version of this class.

상속자 참고

이 기본 클래스는 제네릭 읽기 전용 사용자 지정 컬렉션을 만들 수는 쉽게 수행할 수 있도록 제공 됩니다.This base class is provided to make it easier for implementers to create a generic read-only custom collection. 구현자는 자체를 만드는 대신이 기본 클래스를 확장 하는 것이 좋습니다.Implementers are encouraged to extend this base class instead of creating their own.

생성자

ReadOnlyCollection<T>(IList<T>)

지정한 목록을 둘러싸는 읽기 전용 래퍼인 ReadOnlyCollection<T> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ReadOnlyCollection<T> class that is a read-only wrapper around the specified list.

속성

Count

ReadOnlyCollection<T> 인스턴스에 포함된 요소의 수를 가져옵니다.Gets the number of elements contained in the ReadOnlyCollection<T> instance.

Item[Int32]

지정한 인덱스에 있는 요소를 가져옵니다.Gets the element at the specified index.

Items

IList<T>이 래핑하는 ReadOnlyCollection<T>을 반환합니다.Returns the IList<T> that the ReadOnlyCollection<T> wraps.

메서드

Contains(T)

ReadOnlyCollection<T>에 요소가 있는지 여부를 확인합니다.Determines whether an element is in the ReadOnlyCollection<T>.

CopyTo(T[], Int32)

대상 배열의 지정된 인덱스에서 시작하여 전체 ReadOnlyCollection<T>을 호환되는 1차원 Array에 복사합니다.Copies the entire ReadOnlyCollection<T> to a compatible one-dimensional Array, starting at the specified index of the target array.

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetEnumerator()

ReadOnlyCollection<T>를 반복하는 열거자를 반환합니다.Returns an enumerator that iterates through the ReadOnlyCollection<T>.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
IndexOf(T)

지정된 개체를 검색하고, 전체 ReadOnlyCollection<T>에서 처음으로 검색한 개체의 인덱스(0부터 시작)를 반환합니다.Searches for the specified object and returns the zero-based index of the first occurrence within the entire ReadOnlyCollection<T>.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

ICollection.CopyTo(Array, Int32)

특정 ICollection 인덱스부터 시작하여 Array의 요소를 Array에 복사합니다.Copies the elements of the ICollection to an Array, starting at a particular Array index.

ICollection.IsSynchronized

ICollection에 대한 액세스가 동기화되어 스레드로부터 안전하게 보호되는지를 나타내는 값을 가져옵니다.Gets a value indicating whether access to the ICollection is synchronized (thread safe).

ICollection.SyncRoot

ICollection에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다.Gets an object that can be used to synchronize access to the ICollection.

ICollection<T>.Add(T)

ICollection<T>에 항목을 추가합니다.Adds an item to the ICollection<T>. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

ICollection<T>.Clear()

ICollection<T>에서 항목을 모두 제거합니다.Removes all items from the ICollection<T>. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

ICollection<T>.IsReadOnly

ICollection<T>가 읽기 전용인지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the ICollection<T> is read-only.

ICollection<T>.Remove(T)

ICollection<T>에서 맨 처음 발견되는 특정 개체를 제거합니다.Removes the first occurrence of a specific object from the ICollection<T>. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

IEnumerable.GetEnumerator()

컬렉션을 반복하는 열거자를 반환합니다.Returns an enumerator that iterates through a collection.

IList.Add(Object)

IList에 항목을 추가합니다.Adds an item to the IList. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

IList.Clear()

IList에서 항목을 모두 제거합니다.Removes all items from the IList. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

IList.Contains(Object)

IList에 특정 값이 들어 있는지 여부를 확인합니다.Determines whether the IList contains a specific value.

IList.IndexOf(Object)

IList에서 특정 항목의 인덱스를 결정합니다.Determines the index of a specific item in the IList.

IList.Insert(Int32, Object)

항목을 IList의 지정된 인덱스에 삽입합니다.Inserts an item to the IList at the specified index. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

IList.IsFixedSize

IList의 크기가 고정되어 있는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the IList has a fixed size.

IList.IsReadOnly

IList가 읽기 전용인지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the IList is read-only.

IList.Item[Int32]

지정한 인덱스에 있는 요소를 가져옵니다.Gets the element at the specified index. NotSupportedException은 지정된 인덱스에 항목을 설정하는 경우 발생합니다.A NotSupportedException occurs if you try to set the item at the specified index.

IList.Remove(Object)

IList에서 맨 처음 발견되는 특정 개체를 제거합니다.Removes the first occurrence of a specific object from the IList. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

IList.RemoveAt(Int32)

지정한 인덱스에서 IList 항목을 제거합니다.Removes the IList item at the specified index. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

IList<T>.Insert(Int32, T)

항목을 IList<T>의 지정된 인덱스에 삽입합니다.Inserts an item to the IList<T> at the specified index. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

IList<T>.Item[Int32]

지정한 인덱스에 있는 요소를 가져옵니다.Gets the element at the specified index. NotSupportedException은 지정된 인덱스에 항목을 설정하는 경우 발생합니다.An NotSupportedException occurs if you try to set the item at the specified index.

IList<T>.RemoveAt(Int32)

지정한 인덱스에서 IList<T> 항목을 제거합니다.Removes the IList<T> item at the specified index. 이 구현은 항상 NotSupportedException을 발생시킵니다.This implementation always throws NotSupportedException.

확장 메서드

CopyToDataTable<T>(IEnumerable<T>)

제네릭 매개 변수 TDataTable인 지정된 입력 DataRow 개체를 사용하여 IEnumerable<T> 개체의 복사본이 들어 있는 DataRow을 반환합니다.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

제네릭 매개 변수 TDataRow인 지정된 입력 DataTable 개체를 사용하여 IEnumerable<T> 개체를 지정된 DataRow에 복사합니다.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

제네릭 매개 변수 TDataRow인 지정된 입력 DataTable 개체를 사용하여 IEnumerable<T> 개체를 지정된 DataRow에 복사합니다.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable)

IEnumerable의 요소를 지정된 형식으로 캐스팅합니다.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable의 요소를 필터링합니다.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

쿼리를 병렬화할 수 있도록 합니다.Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable로 변환합니다.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 노드의 상위 항목이 들어 있는 요소 컬렉션을 반환합니다.Returns a collection of elements that contains the ancestors of every node in the source collection.

Ancestors<T>(IEnumerable<T>, XName)

소스 컬렉션에 있는 모든 노드의 상위 항목이 들어 있는 필터링된 요소 컬렉션을 반환합니다.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 문서 및 요소의 하위 노드 컬렉션을 반환합니다.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 요소 및 문서의 하위 요소가 들어 있는 요소 컬렉션을 반환합니다.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Descendants<T>(IEnumerable<T>, XName)

소스 컬렉션에 있는 모든 요소 및 문서의 하위 요소가 들어 있는 필터링된 요소 컬렉션을 반환합니다.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 요소 및 문서의 자식 요소 컬렉션을 반환합니다.Returns a collection of the child elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName)

소스 컬렉션에 있는 모든 요소 및 문서의 필터링된 자식 요소 컬렉션을 반환합니다.Returns a filtered collection of the child elements of every element and document in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

소스 컬렉션의 모든 노드가 문서 순으로 정렬되어 들어 있는 노드 컬렉션을 반환합니다.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 문서 및 요소의 자식 노드 컬렉션을 반환합니다.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

부모 노드에서 소스 컬렉션의 모든 노드를 제거합니다.Removes every node in the source collection from its parent node.

적용 대상

스레드 보안

공용 정적 (Shared Visual Basic의)이 형식의 멤버는 스레드로부터 안전 합니다.Public static (Shared in Visual Basic) members of this type are thread safe. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.Any instance members are not guaranteed to be thread safe.

ReadOnlyCollection<T> 지원할 수 있습니다 여러 판독기 동시에 따라 컬렉션을 수정 되지 않습니다.A ReadOnlyCollection<T> can support multiple readers concurrently, as long as the collection is not modified. 이 경우에 컬렉션을 열거 본질적으로 스레드로부터 안전한 프로시저가 아닙니다.Even so, enumerating through a collection is intrinsically not a thread-safe procedure. 열거 동안 스레드 보안을 보장하려면 전체 열거 동안 컬렉션을 잠그면 됩니다.To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. 여러 스레드에서 컬렉션에 액세스하여 읽고 쓸 수 있도록 허용하려면 사용자 지정 동기화를 구현해야 합니다.To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

추가 정보