Genéricos y matrices (Guía de programación de C#)

Actualización: noviembre 2007

En C# 2.0 y versiones posteriores, las matrices unidimensionales que tienen un límite inferior de cero implementan automáticamente IList<T>. Esto permite crear métodos genéricos que pueden utilizar el mismo código para recorrer en iteración matrices y otros tipos de colecciones. Esta técnica resulta útil principalmente para leer datos de colecciones. La interfaz IList<T> no puede utilizarse para agregar o quitar elementos en una matriz. Se producirá una excepción si intenta llamar a un método IList<T>, como RemoveAt, en una matriz en este contexto.

El siguiente ejemplo de código muestra la forma en que un solo método genérico que toma un parámetro de entrada IList<T> puede recorrer en iteración tanto una lista como una matriz; en este caso, una matriz de enteros.

class Program
{
    static void Main()
    {
        int[] arr = { 0, 1, 2, 3, 4 };
        List<int> list = new List<int>();

        for (int x = 5; x < 10; x++)
        {
            list.Add(x);
        }

        ProcessItems<int>(arr);
        ProcessItems<int>(list);
    }

    static void ProcessItems<T>(IList<T> coll)
    {
        foreach (T item in coll)
        {
            System.Console.Write(item.ToString() + " ");
        }
        System.Console.WriteLine();
    }
}
Nota:

Aunque el método ProcessItems no puede agregar ni quitar elementos, la propiedad IsReadOnly devuelve el valor falso para un T[] dentro de ProcessItems porque la propia matriz no se declaró con el atributo ReadOnly.

Vea también

Conceptos

Guía de programación de C#

Referencia

Genéricos (Guía de programación de C#)

Matrices (Guía de programación de C#)

System.Collections.Generic

Otros recursos

Genéricos en .NET Framework