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]); } } }
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"]); } } }
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