C# | Sobrecarga de indexadores – Part 1

Requisito previo: Indexadores en C#

Al igual que las funciones, los indexadores también pueden sobrecargarse. En C#, podemos tener múltiples indexadores en una sola clase. Para sobrecargar un indexador, declárelo con varios parámetros y cada parámetro debe tener un tipo de datos diferente. Los indexadores están sobrecargados al pasar 2 tipos diferentes de parámetros. Es bastante similar a la sobrecarga de métodos .

Ejemplo 1: en el siguiente programa , los tipos int y float se utilizan para sobrecargar el indexador. Aquí, la palabra » Hola » se asigna usando el indexador int mientras que el parámetro flotante se usa para dar el valor » Geeks » a la string.

// C# Program to illustrate 
// the overloading of indexers
using System;
  
namespace HelloGeeksApp {
      
class HelloGeeks {
      
    // private array of 
    // strings with size 2
    private string[] word = new string[2];
      
    // this indexer gets executed
    // when Obj[0]gets executed
    public string this[int flag]
    {
          
        // using get accessor
        get
        {
            string temp = word[flag];
            return temp;
        }
          
        // using set accessor
        set
        {
            word[flag] = value;
        }
    }
      
    // this is an Overloaded indexer
    // which will execute when 
    // Obj[1.0f] gets executed
    public string this[float flag]
    {
          
        // using get accessor
        get
        {
            string temp = word[1];
            return temp;
        }
          
        // using set accessor
        set
        {
              
            // it will set value of 
            // the private string 
            // assigned in main
            word[1] = value;
              
        }
    }
      
// Main Method
static void Main(string[] args)
{
    HelloGeeks Obj = new HelloGeeks();
      
    Obj[0] = "Hello"; // Value of word[0]
      
    Obj[1.0f] = " Geeks"; // Value of word[1]
      
    Console.WriteLine(Obj[0] + Obj[1.0f]);
}
}
}
Producción:

Hello Geeks

Ejemplo 2: en el programa a continuación, estamos usando solo obtener acceso en un indexador sobrecargado que habilita el modo de solo lectura. Significa que no podemos modificar el valor dado. Aquí los tipos int y string se usan para sobrecargar el indexador. string pública esta [bandera de string] contiene solo obtener acceso que habilita el modo de solo lectura.

// C# program to illustrate the concept
// of indexer overloading by taking 
// only get accessor in overloaded indexer
using System;
  
namespace Geeks {
      
class G4G {
      
    // private array of 
    // strings with size 2
    private string[] str = new string[2];
      
    // this indexer gets called
    // when Obj[0] gets executed
    public string this[int flag]
    {
        // using get accessor
        get
        {
            string temp = str[flag];
            return temp;
        }
          
        // using set accessor
        set
        {
            str[flag] = value;
        }
    }
      
    // this indexer gets called
    // when Obj["GFG"] gets executed
    public string this[string flag]
    {
          
        // using get accessor
        get
        {
            return " C# Indexers Overloading."; // read only mode
        }
    }
      
// Driver Code    
static void Main(string[] args)
{
    G4G Obj = new G4G();
      
    Obj[0] = "This is"; // Value of str[0]
      
    Console.WriteLine(Obj[0] + Obj["GFG"]);
}
}
}
Producción:

This is C# Indexers Overloading.

Nota: La sobrecarga del indexador no se puede realizar simplemente cambiando el tipo de retorno del bloque get.

Publicación traducida automáticamente

Artículo escrito por piyush25pv y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *