23
Nov/092
Nov/092
Indizadores en c#
Los indizadores son propiedades de una clase que hacen que esta se comporte como una matriz.
La definición de un indizador se hace declarando una propiedad con el nombre this.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Jugadores { private List<Jugador> jugadores = new List<Jugador>(); public Jugadores() { } internal Jugador this[int index] { get { return jugadores[index]; } set { jugadores.Add(value); } } } |
Podemos sobrecargar el indizador, cambiando el tipo de dato que recibe o devuelve la propiedad. Por ejemplo, podemos hacer una sobrecarga, que reciba el nombre del jugador en una cadena, y devuelva la instancia del Jugador con dicho nombre.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | internal Jugador this[string nombre] { get { foreach (Jugador item in jugadores) { if (item.Nombre.Equals(nombre)) { return item; } } return null; } } |
Como se ve en el codigo anterior, podemos hacer la propiedad de sólo lectura si lo deseamos, en este aspecto, funcionan como cualquier otra propiedad.
Para hacer uso del indizador, ponemos un código sencillo de ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Program { static void Main(string[] args) { Jugadores jug = new Jugadores(); jug[0] = new Jugador(1, "Victor Valdes"); jug[1] = new Jugador(2, "Daniel Alves"); jug[2] = new Jugador(5, "Carles Puyol"); jug[3] = new Jugador(10, "Andrés Iniesta"); Jugador j = jug["Carles Puyol"]; Console.WriteLine(string.Format("Drosal: {0}, nombre: {1}: ", j.Dorsal, j.Nombre)); j = jug[3]; Console.WriteLine(string.Format("Drosal: {0}, nombre: {1}: ", j.Dorsal, j.Nombre)); Console.ReadKey(); } } |
¿Te gustó este artículo?
Comentarios (2)
Trackbars (0) ( suscribirse a los comentarios de esta entrada )
Deja un comentario
Aún sin trackbacks.

10:06 am on Noviembre 24th, 2009
Está muy bien el post!
3:33 am on Marzo 29th, 2012
bien esplicado!! Saludos