using System; public class SobrecargaIndizador { private string[] Datos; private int TamanioDatos; public SobrecargaIndizador (int tamanioDatos) { TamanioDatos = tamanioDatos; Datos = new string[TamanioDatos]; // se inicializa los elementos del arreglo con la cadena "vacío" for (int i = 0; i < TamanioDatos; ++i) { Datos[i] = "vacío"; } } // primer indizador con parämetro de tipo int y valor de retorno string public string this[int indice] { get { return Datos[indice]; } set { Datos[indice] = value; } } // segundo indizador con parámetro de tipo string public string this[string dato] { get { int contador = 0; for (int i = 0; i < TamanioDatos; ++i) { if (Datos[i].Equals(dato)) { ++contador; } } return contador.ToString(); } set { for (int i = 0; i < TamanioDatos; ++i) { if (Datos[i].Equals(dato)) { Datos[i] = value; } } } } public static void Main () { int tamanio = 10; SobrecargaIndizador si = new SobrecargaIndizador(tamanio); // asigna objetos string a través del indizador con parámetro int si[9] = "Desarrollador"; si[3] = "Programador"; si[5] = "Arquitecto"; // asiga objeto string a través del indizador con parámetro string si["vacío"] = "Analista de Sistemas"; // Contenido del indizador for (int i = 1; i < tamanio; ++i) { Console.WriteLine ("Datos[{0}]: {1}", i, si[i]); } } }