Created
October 14, 2013 21:05
-
-
Save Fhernd/6982206 to your computer and use it in GitHub Desktop.
Demostración de la sobrecarga de un indizador en C#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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["vacio"] = "Analista de Sistemas"; | |
// Contenido del indizador | |
for (int i = 1; i < tamanio; ++i) | |
{ | |
Console.WriteLine ("Datos[{0}]: {1}", i, si[i]); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment