it-swarm.com.de

Wie überlade ich den Operator [] in C #

Ich möchte einer Klasse einen Operator hinzufügen. Ich habe derzeit eine GetValue() -Methode, die ich durch einen [] - Operator ersetzen möchte.

class A
{
    private List<int> values = new List<int>();

    public int GetValue(int index) => values[index];
}
276
Adam Tegen
public int this[int key]
{
    get => GetValue(key);
    set => SetValue(key, value);
}
705

Ich glaube, das ist was Sie suchen:

Indexer (C # -Programmierhandbuch)

class SampleCollection<T>
{
    private T[] arr = new T[100];
    public T this[int i]
    {
        get => 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]);
    }
}
64
William Brendel

Der Operator [] wird als Indexer bezeichnet. Sie können Indexer bereitstellen, die eine Ganzzahl, eine Zeichenfolge oder einen anderen Typ annehmen, den Sie als Schlüssel verwenden möchten. Die Syntax ist unkompliziert und folgt denselben Grundsätzen wie Eigenschaftszugriffe.

Zum Beispiel in Ihrem Fall, in dem ein int der Schlüssel oder der Index ist:

public int this[int index]
{
    get => GetValue(index);
}

Sie können auch einen Set-Accessor hinzufügen, damit der Indexer nicht nur schreibgeschützt, sondern auch schreibgeschützt wird.

public int this[int index]
{
    get => GetValue(index);
    set => SetValue(index, value);
}

Wenn Sie mit einem anderen Typ indizieren möchten, ändern Sie einfach die Signatur des Indexers.

public int this[string index]
...
29
Jeff Yates
public int this[int index]
{
    get => values[index];
}
9
BFree