sobrecarga - ¿Cómo sobrecargo el operador[] en C#
que significa<> en programacion (4)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo sobrecargo el operador de corchetes en C #? 8 respuestas
Me gustaría agregar un operador a una clase. Actualmente tengo un método GetValue () que me gustaría reemplazar con un operador [].
class A
{
private List<int> values = new List<int>();
public int GetValue(int index)
{
return values[index];
}
}
Creo que esto es lo que estás buscando:
Indexadores (Guía de programación C #)
class SampleCollection<T>
{
private T[] arr = new T[100];
public T this[int i]
{
get
{
return arr[i];
}
set
{
arr[i] = value;
}
}
}
// This class shows how client code uses the indexer
class Program
{
static void Main(string[] args)
{
SampleCollection<string> stringCollection =
new SampleCollection<string>();
stringCollection[0] = "Hello, World";
System.Console.WriteLine(stringCollection[0]);
}
}
El operador [] se llama un indexador. Puede proporcionar indizadores que toman un número entero, una cadena o cualquier otro tipo que desee usar como clave. La sintaxis es sencilla, siguiendo los mismos principios que los accesores de propiedades.
Por ejemplo, en su caso donde un int
es la clave o el índice:
public int this[int index]
{
get
{
return GetValue(index);
}
}
También puede agregar un conjunto de elementos de acceso para que el indexador se convierta en lectura y escritura en lugar de solo lectura.
public int this[int index]
{
get
{
return GetValue(index);
}
set
{
SetValue(index, value);
}
}
Si desea indexar utilizando un tipo diferente, simplemente cambie la firma del indizador.
public int this[string index]
...
public int this[int index]
{
get
{
return values[index];
}
}
public int this[int key]
{
get
{
return GetValue(key);
}
set
{
SetValue(key,value);
}
}