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.
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; }
Wobei:
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; } }
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; } }
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!