문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
이 설명서는 보관되지만 유지 되지 않습니다.

CollectionBase 클래스

강력한 형식의 컬렉션에 대한 abstract 기본 클래스를 제공합니다.

System.Object
  System.Collections.CollectionBase
    자세히...

네임스페이스:  System.Collections
어셈블리:  mscorlib(mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class CollectionBase : IList, 
	ICollection, IEnumerable

CollectionBase 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Protected 메서드XNA Framework에서 지원CollectionBase()기본 초기 용량을 사용하여 CollectionBase 클래스의 새 인스턴스를 초기화합니다.
Protected 메서드XNA Framework에서 지원CollectionBase(Int32)지정된 용량을 사용하여 CollectionBase 클래스의 새 인스턴스를 초기화합니다.
위쪽

  이름설명
Public 속성XNA Framework에서 지원Capacity CollectionBase 에 포함될 수 있는 요소의 수를 가져오거나 설정합니다.
Public 속성XNA Framework에서 지원Count CollectionBase 인스턴스에 포함된 요소의 수를 가져옵니다. 이 속성은 재정의할 수 없습니다.
Protected 속성XNA Framework에서 지원InnerList CollectionBase 인스턴스의 요소 목록을 포함하는 ArrayList를 가져옵니다.
Protected 속성XNA Framework에서 지원List CollectionBase 인스턴스의 요소 목록을 포함하는 IList를 가져옵니다.
위쪽

  이름설명
Public 메서드XNA Framework에서 지원Clear CollectionBase 인스턴스에서 개체를 모두 제거합니다. 이 메서드는 재정의할 수 없습니다.
Public 메서드XNA Framework에서 지원Equals(Object)지정한 Object가 현재 Object와 같은지 여부를 확인합니다. (Object에서 상속됨)
Protected 메서드XNA Framework에서 지원Finalize가비지 수집에서 회수하기 전에 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원GetEnumerator CollectionBase 인스턴스를 반복하는 열거자를 반환합니다.
Public 메서드XNA Framework에서 지원GetHashCode특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드XNA Framework에서 지원MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Protected 메서드XNA Framework에서 지원OnClear CollectionBase 인스턴스의 내용을 지울 때 추가로 사용자 지정 프로세스를 수행합니다.
Protected 메서드XNA Framework에서 지원OnClearComplete CollectionBase 인스턴스의 내용을 지운 후에 추가로 사용자 지정 프로세스를 수행합니다.
Protected 메서드XNA Framework에서 지원OnInsert CollectionBase 인스턴스에 새 요소를 삽입하기 전에 추가로 사용자 지정 프로세스를 수행합니다.
Protected 메서드XNA Framework에서 지원OnInsertComplete CollectionBase 인스턴스에 새 요소를 삽입한 후에 추가로 사용자 지정 프로세스를 수행합니다.
Protected 메서드XNA Framework에서 지원OnRemove CollectionBase 인스턴스에서 요소를 제거할 때 추가로 사용자 지정 프로세스를 수행합니다.
Protected 메서드XNA Framework에서 지원OnRemoveComplete CollectionBase 인스턴스에서 요소를 제거한 후에 추가로 사용자 지정 프로세스를 수행합니다.
Protected 메서드XNA Framework에서 지원OnSet CollectionBase 인스턴스에 값을 설정하기 전에 추가로 사용자 지정 프로세스를 수행합니다.
Protected 메서드XNA Framework에서 지원OnSetComplete CollectionBase 인스턴스에 값을 설정한 후에 추가로 사용자 지정 프로세스를 수행합니다.
Protected 메서드XNA Framework에서 지원OnValidate값의 유효성을 검사할 때 추가로 사용자 지정 프로세스를 수행합니다.
Public 메서드XNA Framework에서 지원RemoveAt CollectionBase 인스턴스의 지정한 인덱스에서 요소를 제거합니다. 이 메서드는 재정의할 수 없습니다.
Public 메서드XNA Framework에서 지원ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
위쪽

  이름설명
Public 확장 메서드AsParallel쿼리를 병렬화할 수 있도록 합니다. (ParallelEnumerable에서 정의됨)
Public 확장 메서드AsQueryable IEnumerable IQueryable로 변환합니다. (Queryable에서 정의됨)
Public 확장 메서드XNA Framework에서 지원Cast<TResult> IEnumerable 의 요소를 지정된 형식으로 변환합니다. (Enumerable에서 정의됨)
Public 확장 메서드XNA Framework에서 지원OfType<TResult>지정된 형식에 따라 IEnumerable의 요소를 필터링합니다. (Enumerable에서 정의됨)
위쪽

  이름설명
명시적 인터페이스 구현Private 메서드XNA Framework에서 지원ICollection.CopyTo대상 배열의 지정된 인덱스에서 시작하여 전체 CollectionBase를 호환되는 1차원 Array에 복사합니다.
명시적 인터페이스 구현Private 속성XNA Framework에서 지원ICollection.IsSynchronized CollectionBase 에 대한 액세스가 동기화되어 스레드로부터 안전하게 보호되는지 여부를 나타내는 값을 가져옵니다.
명시적 인터페이스 구현Private 속성XNA Framework에서 지원ICollection.SyncRoot CollectionBase 에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다.
명시적 인터페이스 구현Private 메서드XNA Framework에서 지원IList.Add개체를 CollectionBase의 끝 부분에 추가합니다.
명시적 인터페이스 구현Private 메서드XNA Framework에서 지원IList.Contains CollectionBase 에 특정 요소가 들어 있는지 여부를 확인합니다.
명시적 인터페이스 구현Private 메서드XNA Framework에서 지원IList.IndexOf지정한 Object를 검색하고, 전체 CollectionBase 내에서 처음 나오는 인덱스(0부터 시작)를 반환합니다.
명시적 인터페이스 구현Private 메서드XNA Framework에서 지원IList.Insert CollectionBase 의 지정된 인덱스에 요소를 삽입합니다.
명시적 인터페이스 구현Private 속성XNA Framework에서 지원IList.IsFixedSize CollectionBase 의 크기가 고정되어 있는지 여부를 나타내는 값을 가져옵니다.
명시적 인터페이스 구현Private 속성XNA Framework에서 지원IList.IsReadOnly CollectionBase 가 읽기 전용인지 여부를 나타내는 값을 가져옵니다.
명시적 인터페이스 구현Private 속성XNA Framework에서 지원IList.Item지정한 인덱스에 있는 요소를 가져오거나 설정합니다.
명시적 인터페이스 구현Private 메서드XNA Framework에서 지원IList.Remove CollectionBase 에서 맨 처음 나타나는 특정 개체를 제거합니다.
위쪽

CollectionBase 인스턴스는 항상 수정할 수 있습니다. 이 클래스의 읽기 전용 버전을 보려면 ReadOnlyCollectionBase를 참조하십시오.

CollectionBase 의 용량은 CollectionBase가 보유할 수 있는 요소의 수입니다. 요소가 CollectionBase에 추가될 때 필요하면 재할당을 통해 용량이 자동으로 증가됩니다. 용량은 Capacity 속성을 명시적으로 설정하여 줄일 수 있습니다.

구현자 참고 사항

이 기본 클래스를 사용하면 강력한 형식의 사용자 지정 컬렉션을 쉽게 만들 수 있습니다. 구현자는 고유 클래스를 만드는 대신 이 기본 클래스를 확장하는 것이 좋습니다.

다음 코드 예제에서는 CollectionBase 클래스를 구현하고 해당 구현을 사용하여 Int16 개체의 컬렉션을 만듭니다.


using System;
using System.Collections;

public class Int16Collection : CollectionBase  {

   public Int16 this[ int index ]  {
      get  {
         return( (Int16) List[index] );
      }
      set  {
         List[index] = value;
      }
   }

   public int Add( Int16 value )  {
      return( List.Add( value ) );
   }

   public int IndexOf( Int16 value )  {
      return( List.IndexOf( value ) );
   }

   public void Insert( int index, Int16 value )  {
      List.Insert( index, value );
   }

   public void Remove( Int16 value )  {
      List.Remove( value );
   }

   public bool Contains( Int16 value )  {
      // If value is not of type Int16, this will return false.
      return( List.Contains( value ) );
   }

   protected override void OnInsert( int index, Object value )  {
      // Insert additional code to be run only when inserting values.
   }

   protected override void OnRemove( int index, Object value )  {
      // Insert additional code to be run only when removing values.
   }

   protected override void OnSet( int index, Object oldValue, Object newValue )  {
      // Insert additional code to be run only when setting values.
   }

   protected override void OnValidate( Object value )  {
      if ( value.GetType() != typeof(System.Int16) )
         throw new ArgumentException( "value must be of type Int16.", "value" );
   }

}


public class SamplesCollectionBase  {

   public static void Main()  {

      // Create and initialize a new CollectionBase.
      Int16Collection myI16 = new Int16Collection();

      // Add elements to the collection.
      myI16.Add( (Int16) 1 );
      myI16.Add( (Int16) 2 );
      myI16.Add( (Int16) 3 );
      myI16.Add( (Int16) 5 );
      myI16.Add( (Int16) 7 );

      // Display the contents of the collection using foreach. This is the preferred method.
      Console.WriteLine( "Contents of the collection (using foreach):" );
      PrintValues1( myI16 );

      // Display the contents of the collection using the enumerator.
      Console.WriteLine( "Contents of the collection (using enumerator):" );
      PrintValues2( myI16 );

      // Display the contents of the collection using the Count property and the Item property.
      Console.WriteLine( "Initial contents of the collection (using Count and Item):" );
      PrintIndexAndValues( myI16 );

      // Search the collection with Contains and IndexOf.
      Console.WriteLine( "Contains 3: {0}", myI16.Contains( 3 ) );
      Console.WriteLine( "2 is at index {0}.", myI16.IndexOf( 2 ) );
      Console.WriteLine();

      // Insert an element into the collection at index 3.
      myI16.Insert( 3, (Int16) 13 );
      Console.WriteLine( "Contents of the collection after inserting at index 3:" );
      PrintIndexAndValues( myI16 );

      // Get and set an element using the index.
      myI16[4] = 123;
      Console.WriteLine( "Contents of the collection after setting the element at index 4 to 123:" );
      PrintIndexAndValues( myI16 );

      // Remove an element from the collection.
      myI16.Remove( (Int16) 2 );

      // Display the contents of the collection using the Count property and the Item property.
      Console.WriteLine( "Contents of the collection after removing the element 2:" );
      PrintIndexAndValues( myI16 );

   }

   // Uses the Count property and the Item property.
   public static void PrintIndexAndValues( Int16Collection myCol )  {
      for ( int i = 0; i < myCol.Count; i++ )
         Console.WriteLine( "   [{0}]:   {1}", i, myCol[i] );
      Console.WriteLine();
   }

   // Uses the foreach statement which hides the complexity of the enumerator.
   // NOTE: The foreach statement is the preferred way of enumerating the contents of a collection.
   public static void PrintValues1( Int16Collection myCol )  {
      foreach ( Int16 i16 in myCol )
         Console.WriteLine( "   {0}", i16 );
      Console.WriteLine();
   }

   // Uses the enumerator. 
   // NOTE: The foreach statement is the preferred way of enumerating the contents of a collection.
   public static void PrintValues2( Int16Collection myCol )  {
      System.Collections.IEnumerator myEnumerator = myCol.GetEnumerator();
      while ( myEnumerator.MoveNext() )
         Console.WriteLine( "   {0}", myEnumerator.Current );
      Console.WriteLine();
   }
}


/* 
This code produces the following output.

Contents of the collection (using foreach):
   1
   2
   3
   5
   7

Contents of the collection (using enumerator):
   1
   2
   3
   5
   7

Initial contents of the collection (using Count and Item):
   [0]:   1
   [1]:   2
   [2]:   3
   [3]:   5
   [4]:   7

Contains 3: True
2 is at index 1.

Contents of the collection after inserting at index 3:
   [0]:   1
   [1]:   2
   [2]:   3
   [3]:   13
   [4]:   5
   [5]:   7

Contents of the collection after setting the element at index 4 to 123:
   [0]:   1
   [1]:   2
   [2]:   3
   [3]:   13
   [4]:   123
   [5]:   7

Contents of the collection after removing the element 2:
   [0]:   1
   [1]:   3
   [2]:   13
   [3]:   123
   [4]:   7

*/



.NET Framework

4, 3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

Windows 7, Windows Vista SP1 이상, Windows XP SP3, Windows XP SP2 x64 버전, Windows Server 2008(Server Core는 지원되지 않음), Windows Server 2008 R2(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

이 형식의 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 모든 인스턴스 멤버는 스레드로부터 안전하지 않을 수 있습니다.

이렇게 구현하면 CollectionBase에 대해 동기화되어 스레드로부터 안전하게 보호되는 래퍼가 제공되지 않지만 파생 클래스에서는 SyncRoot 속성을 사용하여 CollectionBase의 자체 동기화 버전을 만들 수 있습니다.

컬렉션을 열거하는 프로시저는 기본적으로 스레드로부터 안전하지 않습니다. 컬렉션이 동기화되어 있을 때 다른 스레드에서 해당 컬렉션을 수정할 수 있으므로 이렇게 되면 열거자에서 예외가 throw됩니다. 열거하는 동안 스레드로부터 안전하게 보호하려면 전체 열거를 수행하는 동안 컬렉션을 잠그거나 다른 스레드에서 변경된 내용으로 인해 발생한 예외를 catch하면 됩니다.

System.Object
  System.Collections.CollectionBase
    System.CodeDom.CodeAttributeArgumentCollection
    System.CodeDom.CodeAttributeDeclarationCollection
    System.CodeDom.CodeCatchClauseCollection
    System.CodeDom.CodeCommentStatementCollection
    System.CodeDom.CodeDirectiveCollection
    System.CodeDom.CodeExpressionCollection
    System.CodeDom.CodeNamespaceCollection
    System.CodeDom.CodeParameterDeclarationExpressionCollection
    System.CodeDom.CodeStatementCollection
    System.CodeDom.CodeTypeDeclarationCollection
    System.CodeDom.CodeTypeMemberCollection
    System.CodeDom.CodeTypeParameterCollection
    System.CodeDom.CodeTypeReferenceCollection
    System.CodeDom.Compiler.CompilerErrorCollection
    System.ComponentModel.Design.Data.DataSourceDescriptorCollection
    System.ComponentModel.Design.Data.DataSourceGroupCollection
    System.ComponentModel.Design.DesignerActionItemCollection
    System.ComponentModel.Design.DesignerActionListCollection
    System.ComponentModel.Design.DesignerVerbCollection
    System.Configuration.Install.InstallerCollection
    System.Data.SqlClient.SqlBulkCopyColumnMappingCollection
    System.Diagnostics.CounterCreationDataCollection
    System.Diagnostics.EventLogPermissionEntryCollection
    System.Diagnostics.PerformanceCounterPermissionEntryCollection
    System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaClassCollection
    System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaPropertyCollection
    System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteCollection
    System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLinkCollection
    System.DirectoryServices.ActiveDirectory.ActiveDirectorySubnetCollection
    System.DirectoryServices.ActiveDirectory.DirectoryServerCollection
    System.DirectoryServices.DirectoryServicesPermissionEntryCollection
    System.DirectoryServices.PropertyValueCollection
    System.DirectoryServices.Protocols.DirectoryAttribute
    System.DirectoryServices.Protocols.DirectoryAttributeCollection
    System.DirectoryServices.Protocols.DirectoryAttributeModificationCollection
    System.DirectoryServices.Protocols.DirectoryControlCollection
    System.Messaging.AccessControlList
    System.Messaging.MessageQueuePermissionEntryCollection
    System.Security.Cryptography.X509Certificates.X509CertificateCollection
    System.ServiceProcess.ServiceControllerPermissionEntryCollection
    System.Web.ParserErrorCollection
    System.Web.Services.Description.BasicProfileViolationCollection
    System.Web.Services.Description.MimePartCollection
    System.Web.Services.Description.MimeTextMatchCollection
    System.Web.Services.Description.ServiceDescriptionBaseCollection
    System.Web.Services.Description.WebReferenceCollection
    System.Web.Services.Discovery.DiscoveryClientResultCollection
    System.Web.Services.Discovery.DiscoveryReferenceCollection
    System.Web.Services.Protocols.SoapHeaderCollection
    System.Web.UI.WebControls.EmbeddedMailObjectsCollection
    System.Web.UI.WebControls.RoleGroupCollection
    System.Web.UI.WebControls.WebParts.ProxyWebPartConnectionCollection
    System.Web.UI.WebControls.WebParts.WebPartConnectionCollection
    System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection
    System.Web.UI.WebControls.WebParts.WebPartTransformerCollection
    System.Windows.Documents.LinkTargetCollection
    System.Windows.Forms.Design.Behavior.BehaviorServiceAdornerCollection
    System.Windows.Forms.Design.Behavior.GlyphCollection
    System.Xml.Schema.XmlSchemaObjectCollection
    System.Xml.Serialization.Advanced.SchemaImporterExtensionCollection
    System.Xml.Serialization.XmlAnyElementAttributes
    System.Xml.Serialization.XmlArrayItemAttributes
    System.Xml.Serialization.XmlElementAttributes
    System.Xml.Serialization.XmlSchemas
표시: