Requisito previo : Propiedades en C#
Los indexadores permiten que las instancias de una clase o estructura se indexen como arrays. Al usar la clase de indexadores, se comportará como una array virtual. El valor indexado se puede establecer o recuperar sin especificar explícitamente un tipo o miembro de instancia. Los indexadores se parecen a las propiedades excepto que sus accesores toman parámetros. Los indexadores son casi similares a las propiedades . La principal diferencia entre los indexadores y las propiedades es que los usuarios de los indexadores tomarán parámetros.
Indexadores que usan una string como índice:
Este método le dará más información, legibilidad. Si queremos recuperar información usando una string como índice.
Ejemplo:
ic["username"] = "user12"; ic["password"] = "12345";
Esto dará más legibilidad que el código que se proporciona a continuación.
ic[0] = "user12"; ic[1] = "12345";
Sintaxis:
[access_modifier] [return_type] this [argument_list] { get { // retrieval code or code to get the value } set { // code for setting value to member }
En la sintaxis anterior:
- access_modifier : puede ser público, privado, protegido o interno.
- return_type : puede ser cualquier tipo de C# válido. En este caso, será de tipo string.
- this : Es la palabra clave que apunta al objeto de la clase actual.
- argument_list : Esto especifica la lista de parámetros del indexador.
- get{ } y set { } : estos son los accesores.
Ejemplo:
C#
// C# program to illustrate the Indexers // Using String as an Index using System; // class declaration class IndexerPOC { // class members private string[] val = new string[4]; // indexer array private string[] indices={"username","password","email","Book"}; // Indexer declaration // Here pubic is the modifier // string is the return type of // Indexer and "this" is the keyword // which refer to the calling object. // having parameters list public string this[string index] { // get Accessor // retrieving the values // stored in val[] array // of strings using string indexer. get { return val[Array.IndexOf(indices,index)]; } // set Accessor // setting the value at // passed i of val set { // value keyword is used // to define the value // being assigned by the // set indexer. val[ Array.IndexOf(indices,index)] = value; } } } // Driver Class class Program { // Main Method public static void Main() { // creating an object of parent class which // acts as primary address for using Indexer IndexerPOC ic = new IndexerPOC(); // Inserting values in ic[] // Here we are using the object // of class as an array ic["username"] = "user12"; ic["password"] = "12345"; ic["email"] = "user123@gmail.com"; ic["Book"]="CSHARP"; Console.Write("Printing values stored in objects used as arrays\n"); // printing values Console.WriteLine("UserName = {0}", ic["username"]); Console.WriteLine("Password = {0}", ic["password"]); Console.WriteLine("Email = {0}", ic["email"]); Console.WriteLine("Book = {0}", ic["Book"]); } }
Producción:
Printing values stored in objects used as arrays UserName = user12 Password = 12345 Email = user123@gmail.com Book = CSHARP