23
Nov/09
2

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?

¡Considera suscribirte a nuestro feed!

Archivado en: .NET, C#
Comentarios (2) Trackbars (0)
  1. Quiqu3
    10:06 am on Noviembre 24th, 2009

    Está muy bien el post! ;)

  2. Juan Z
    3:33 am on Marzo 29th, 2012

    bien esplicado!! Saludos

Deja un comentario

Aún sin trackbacks.

Better Tag Cloud