Sorteo Libros Krasis Press
 
Enviar a un amigo Imprimir Texto sin justificar Texto justificado Letra pequeña Letra mediana Letra grande
buscar 
novedades
Recibe las ultimas noticias y los mejores articulos en tu email
Secciones
 • .NET Framework
 • ADO .NET
 • Ajax
 • Asp .NET
 • Biztalk
 • C#
 • Commerce Server
 • Exchange
 • IIS
 • Metodologías
 • J#
 • Móviles
 • Office
 • Reporting Services
 • Seguridad
 • Servicios Web
 • Sharepoint
 • Silverlight
 • SQL Server
 • Visual Basic .NET
 • Visual C++ .NET
 • Visual Studio
 • WCF
 • Windows
 • Workflow Foundation
 • WPF
 • XAML
 • XML
 • Dynamics
 • Libros
 • Noticias
 • Articulos
 • Webcast
 • Tutoriales
 • Eventos
 • Cursos
 • Ofertas Empleo
 • RSS
Contacto
¿Quieres saber quien es el creador de Clikear?
Weblogfree.com, crea tu propio blog facilmente, gratis y en español
Dotnetsolidario, ayuda al tercer mundo a traves de las tecnologias de la informacion
 
 

Tutorial C#

Definición de indizador

 

A la hora de definir un indizador se usa una sintaxis parecida a la de las propiedades:

 

            <tipoIndizador> this[<índices>]

            {

                        set

                        {

                                   <códigoEscritura>

                        }

                        get

                        {

                                   <códigoLectura>

                        }

            }

 

Las únicas diferencias entre esta sintaxis y la de las propiedades son:

 

  • El nombre dado a un indizador siempre ha de ser this, pues carece de sentido poder darle cualquiera en tanto que a un indizador no se accede por su nombre sino aplicando el operador [ ] a un objeto. Por ello, lo que diferenciará a unos indizadores de otros será el número y tipo de sus <índices>

 

  • En <índices> se indica cuáles son los índices que se pueden usar al acceder al indizador. Para ello la sintaxis usada es casi la misma que la que se usa para especificar los parámetros de un método, sólo que no se admite la inclusión de modificadores ref, out o params y que siempre ha de definirse al menos un parámetro. Obviamente, el nombre que se dé a cada índice será el nombre con el que luego se podrá acceder al mismo en los bloques set/get.

 

  • No se pueden definir indizadores estáticos, sino sólo indizadores de objetos.

 

Por todo lo demás, la sintaxis de definición de los indizadores es la misma que la de las propiedades: pueden ser de sólo lectura o de sólo escritura, da igual el orden en que se definan sus bloques set/get, dentro del bloque set se puede acceder al valor a escribir a través del parámetro especial value del tipo del indizador, el código del bloque get ha de devolver un objeto de dicho tipo, etc.                                                                                                                    

 

A continuación se muestra un ejemplo de definición de una clase que consta de dos indizadores: ambos permiten almacenar elementos de tipo entero, pero uno toma como índice un entero y el otro toma dos cadenas:

 

            using System;

 

            public class A

            {

                        public int this[int índice]

                        {

                                   set

                                   {

                                               Console.WriteLine(“Escrito {0} en posición {1}”, value, índice);

                                   }

                                   get

                                   {          

                                               Console.WriteLine(“Leído 1 de posición {0}”,  índice);

                                               return 1;

                                   }

                        }

 

                        public int this[string cad1, string cad2]

                        {

                           set

                           {

                                    Console.WriteLine(“Escrito {0} en posición ({1},{2})”, value, cad1, cad2);

                           }

                           get

                           {

                                   Console.WriteLine(“Leído prueba de posición ({0},{1})”, cad1, cad2);

                                   return 2;

                           }

                        }

            }

Principal
Recomendado