Category Archives: Collections

A Magia das Interfaces

ICollection – Overview

Definição

O .NETFW oferece duas versões de ICollection, a System.Collections.ICollection e a System.Collections.Generic.ICollection T versão genérica para manipular coleções.

A Definição

A definição do tipo ICollection:

public interface ICollection : IEnumerable
{
    int Count { get; } 
    bool IsSynchronized { get; }
    Object SyncRoot { get; }
 
    void CopyTo(Array array, int index);
}

Note como o C# implementa esse grupo de coleção.

A ICollection herda de IEnumerable. Então, acessamos todos os membros da IEnumerable implementados em todas as classes que implementam a ICollection.

Para mais detalhes sobre métodos e propriedades. Consulte a documentação da MSDN.

Define o tamanho, os enums, e os métodos de sincronização para todas as coleções não genéricas.

ICollection T

Agora a versão genérica:

public interface ICollection<T> : IEnumerable<T>, IEnumerable
{
    int Count { get; }
    bool IsReadOnly { get; }
 
    void Add(T item);
    void Clear();
    bool Contains(T item);
    void CopyTo(T[] array, int arrayIndex);
    bool Remove(T item);
}

Note que ela se difere da versão não-genérico.

Ela define métodos para adicionar, remover e limpar uma coleção. A forma da implementação da sincronização também se difere.

Provavelmente, isso ocorreu devido à versão genérica dessa interface ter sido incorporada no. NET 2.0 enquanto que a versão não genérica foi adicionada no NET 1.1.