En la programación orientada a objetos , un indexador permite que las instancias de una clase o estructura particular se indexen como si fueran matrices. [1] Es una forma de sobrecarga de operadores .
Implementación
Los indexadores se implementan a través de los métodos de acceso get y set para . Son similares a las propiedades , pero se diferencian en que no son estáticos y en el hecho de que los métodos de acceso de los indexadores toman parámetros. Los métodos de acceso get y set se llaman como métodos utilizando la lista de parámetros de la declaración del indexador, pero el método de acceso set aún tiene el parámetro implícito.
operator[]value
Ejemplo
A continuación se muestra un ejemplo en C# del uso de un indexador en una clase: [2]
clase Familia { Lista privada < cadena > _familyMembers = nueva Lista < cadena > ();
público Familia ( params string [ ] miembros ) { _familyMembers.AddRange ( miembros ) ; }
public string this [ int index ] { // El descriptor de acceso get => _familyMembers [ index ];
// El descriptor de acceso al conjunto con
set => _familyMembers [ index ] = value ; }
public int this [ string val ] { // Obtener el índice por valor (primer elemento encontrado) get => _familyMembers . FindIndex ( m => m == val ); }
public int Longitud => _familyMembers . Conteo ; }
Ejemplo de uso:
void Main () { var doeFamily = new Family ( "John" , "Jane" ); for ( int i = 0 ; i < doeFamily . Length ; i ++ ) { var member = doeFamily [ i ]; var index = doeFamily [ member ]; // lo mismo que i en este caso, pero demuestra la sobrecarga del indexador que permite buscar doeFamily por valor. Console . WriteLine ( $"{member} es el número de miembro {index} de {nameof(doeFamily)}" ); } }
En este ejemplo, el indexador se utiliza para obtener el valor en la posición n y, a continuación, para obtener la posición en la lista a la que hace referencia su valor. El resultado del código es:
John es el miembro número 0 de la familia doe. Jane es el miembro número 1 de la familia doe.
Véase también
Referencias
- ^ jagadish980 (29 de enero de 2008). "C#: ¿Qué es un indexador en C#?". FOROS DE SURESHKUMAR.NET . Archivado desde el original el 22 de septiembre de 2009. Consultado el 1 de agosto de 2011 .
{{cite web}}: CS1 maint: numeric names: authors list (link) - ^ "Preguntas de entrevista de C#". .net Funda . Consultado el 1 de agosto de 2011 .