jueves, 28 de agosto de 2008

IList la interface de escritura

IList la interface de escritura

En el post anterior hablé acerca de IEnumerable, una linda interface que está en toda colección que se precie de serlo posee, pero que no nos deja más que leer, si lo que necesitamos es poder escribir la interface es IList, vamos a ver su firma

public interface IList : ICollection, IEnumerable
{
    int Add(object value);
    void Clear();
    bool Contains(object value);
    int IndexOf(object value);
    void Insert(int index, object value);
    void Remove(object value);
    void RemoveAt(int index);

    bool IsFixedSize { get; }
    bool IsReadOnly { get; }
    object this[int index] { get; set; }
}

Como vemos IList implementa IEnumerable o sea que la podemos iterar con foreach, y también implementa ICollection, veámos de qué se trata:

public interface ICollection : IEnumerable
{
    void CopyTo(Array array, int index);

    int Count { get; }
    bool IsSynchronized { get; }
    object SyncRoot { get; }
}

ICollection para qué sirve?

Esta interface tiene métodos para iterar y sincronizar, los métodos para iterar los hereda de IEnumerable y ya los conocemos, vamos a detenernos en los otros

CopyTo: sirve para copiar el contenido de la clase que implementa ICollection al Array que se pasa como parámetro a partir de la posición del Array que se indica en index

IsSynchonized: indica si la colección se encuentra implementado "Threat safe"

SyncRoot: devuelve un objeto para sincronizar la colección en un ambiente multi hilo, para hacer un lock

Ahora sí, IList

IList tiene los métodos necesarios para poder agregar elementos, verificar que existan, la posición de un elemento determinado, etc.

Dónde encontramos IList?

La implementación más sencilla de IList se encuentra en la clase ArrayList, por lo tanto podemos concluir que ArrayList es la colección más sencilla que podemos utilizar y que seguramente vamos a utilizar con mayor frecuencia (esto es un poco mentira por generics pero eso lo vamos a ver más adelante)

ArrayList también implementa mucho métodos que no pertenecen a ninguna interface, algunos muy interesantes son

Sort: para ordenar la lista, con un IComparer por defecto y una sobrecarga para suministrarle uno propio.

BinarySearch: para búsqueda binaria, es decir, busca de a mitades.

ConvertAll: permite convertir todos los elemento de un tipo a otro, el converter se lo suministramos nosotros

El resto de los métodos son bastante autodescriptivos, hasta la próxima.

 

2 comentarios:

Victor Hugo Saavedra dijo...

esta bien bueno tu blog. Felicitaciones!!

yo tengo uno re ´parecido, de hecho tiene el mismo diseño :)

--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com

Leonardo Micheloni dijo...

Gracias por tu comentario Victor, muy interesante tu blog, saludos.