Tag Archives: estrutura de dados

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.

A Magia das Classes – System.Collections

System.Collections – Overview

Conheça o arsenal disponível para trabalharmos com os vários tipos de coleções. Entender as suas características nos ajudará a utilizar o melhor de cada um destes recursos. Vamos lá:

Definição

O namespace System.Collections provê classes, métodos e propriedades para trabalhar com estrutura de dados variáveis.

A Localização

A IEnumerable está localizado no namespace System.Collections;

Classes & Interfaces

As Collections são tratadas por Classes e Interfaces:

  • IEnumerable
  • IEnumerator
  • ICollection
  • IList
  • IDictionary

ICollection

As classes derivadas da interface ICollection:

  • Collections.Stack
  • Collections.Queue
  • Collections.BitArray
  • System.Collections.Specialized.NameValueCollection

IDictionary

Esta interface representa collections com pares valor/nome. As coleções que herdam a IDictionary incluem:

  • Collections.SortedList
  • Collections.Hashtable
  • Collections.Specialized.HybridDictionary
  • Collections.Specialized.ListDictionary

IList

Esta interface representa coleções com valor apenas. Algumas classes que herdam desta interface:

  • Array
  • Collections.ArrayList
  • Collections.Specialized.StringCollection