Heim > Backend-Entwicklung > C++ > Wie kann ich den Operator für eckige Klammern in C# überladen?

Wie kann ich den Operator für eckige Klammern in C# überladen?

Susan Sarandon
Freigeben: 2025-01-07 06:37:41
Original
431 Leute haben es durchsucht

How Can I Overload the Square-Bracket Operator in C#?

Überladen des eckigen Klammeroperators in C

In C# ermöglicht der eckige Klammeroperator den Array-Zugriff und den Schlüsselwertabruf aus wörterbuchähnlichen Objekten. Diese Klassen unterstützen jedoch nicht nativ das Überladen des Operators für eckige Klammern. Die Dokumentation für diese Funktion ist unter der Eigenschaft „Item“ in der C#-Dokumentation aufgeführt.

Implementieren des Indexers

Um den Operator in eckigen Klammern in Ihren eigenen Klassen zu überladen, können Sie einen Indexer deklarieren Eigentum. Die Syntax für eine Indexer-Eigenschaft lautet:

public type this[arglist] { get; set; }
Nach dem Login kopieren

Wobei:

  • Typ ist der Typ des Werts, den der Indexer zurückgibt.
  • Arglist ist ein Komma- Getrennte Liste von Parametern, die den Index des abzurufenden oder festzulegenden Elements angeben.

Zum Beispiel: Um den Operator in eckigen Klammern für ein zweidimensionales Array zu überladen, können Sie eine Indexer-Eigenschaft wie folgt deklarieren:

public object this[int x, int y]
{
    get { return array[x, y]; }
    set { array[x, y] = value; }
}
Nach dem Login kopieren

Einschränkungen und Ausnahmen

Es ist wichtig zu beachten, dass der Indexer im Die DataGridView-Klasse löst keine Ausnahme aus, wenn Sie ungültige Koordinaten angeben. Es ist jedoch möglich, dieses Verhalten zu überschreiben, indem Sie Ausnahmen in Ihrer eigenen Implementierung der Indexer-Eigenschaft explizit behandeln.

Um beispielsweise eine ArgumentOutOfRangeException auszulösen, wenn die angegebenen Koordinaten ungültig sind, können Sie die Indexer-Eigenschaft wie folgt implementieren :

public object this[int x, int y]
{
    get
    {
        if (x < 0 || x >= width)
        {
            throw new ArgumentOutOfRangeException("x");
        }
        if (y < 0 || y >= height)
        {
            throw new ArgumentOutOfRangeException("y");
        }

        return array[x, y];
    }

    set
    {
        if (x < 0 || x >= width)
        {
            throw new ArgumentOutOfRangeException("x");
        }
        if (y < 0 || y >= height)
        {
            throw new ArgumentOutOfRangeException("y");
        }

        array[x, y] = value;
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich den Operator für eckige Klammern in C# überladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage