En la programación orientada a objetos , un indexador permite que las instancias de una clase o estructura en particular se indexen como matrices. [1] Es una forma de sobrecarga del operador .
Implementación
Indexadores se implementan a través de las Obtener y establecer métodos de acceso para el . Son similares a las propiedades , pero se diferencian por no ser estáticas y por el hecho de que los descriptores de acceso de los indexadores toman parámetros. Los descriptores de acceso get y set se llaman como métodos utilizando la lista de parámetros de la declaración del indexador, pero el descriptor de acceso set todavía tiene el parámetro implícito .operator[]
value
Ejemplo
Aquí hay un ejemplo de C # del uso de un indexador en una clase: [2]
clase OurFamily { público OurFamily ( params cadena [] pMembers ) { familymembers = nueva lista < string > (); familyMembers . AddRange ( pMembers ); }Private List < string > familyMembers ; cadena pública this [ int index ] { // El descriptor de acceso get { return familyMembers [ índice ]; }// El descriptor de acceso set con set { familyMembers [ index ] = value ; } }public int this [ string val ] { // Obteniendo índice por valor (primer elemento encontrado) get { return familyMembers . FindIndex ( m => m == val ); } }public int Length => familyMembers . Contar ;}
Ejemplo de uso:
void Main () { var doeFamily = new OurFamily ( "John" , "Jane" ); for ( int i = 0 ; i < doeFamily . Longitud ; i ++) { var member = doeFamily [ i ]; var index = doeFamily [ miembro ]; // Lo mismo que i en este caso, pero demuestra la sobrecarga del indexador que permite buscar doeFamily por valor. Consola . WriteLine ( $ "{miembro} es el número de miembro {índice} de {nombre de (doeFamily)}" ); } }
En este ejemplo, el indexador se usa para obtener el valor en la enésima posición y luego para obtener la posición en la lista referenciada por su valor. La salida del código es:
John es el miembro número 0 de la familia Doe Jane es la miembro número 1 de la familia Doe
Ver también
Referencias
- ↑ jagadish980 (29 de enero de 2008). "C # - ¿Qué es un indexador en C #?" . http://forums.sureshkumar.net/forum.php : Boletín: FOROS SURESHKUMAR.NET. Archivado desde el original el 22 de septiembre de 2009 . Consultado el 1 de agosto de 2011 .
- ^ "Preguntas de la entrevista de C #" . http://www.dotnetfunda.com/ : .net Funda . Consultado el 1 de agosto de 2011 .