Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created October 14, 2013 21:05
Show Gist options
  • Save Fhernd/6982206 to your computer and use it in GitHub Desktop.
Save Fhernd/6982206 to your computer and use it in GitHub Desktop.
Demostración de la sobrecarga de un indizador en C#.
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