Mit DataGridView können Sie beispielsweise Folgendes tun:
DataGridView dgv = ...;
DataGridViewCell cell = dgv[1,5];
aber für mein Leben kann ich die Dokumentation zum Index- / eckigen Klammeroperator nicht finden. Wie nennen sie es? Wo ist es implementiert? Kann es werfen? Wie kann ich dasselbe in meinen eigenen Klassen tun?
ETA: Danke für all die schnellen Antworten. Kurz gesagt: Die entsprechende Dokumentation befindet sich unter der Eigenschaft "Artikel". Der Weg zur Überlastung besteht darin, eine Eigenschaft wie zu deklarieren public object this[int x, int y]{ get{...}; set{...} }
. Der Indexer für DataGridView löst zumindest laut Dokumentation nicht. Es wird nicht erwähnt, was passiert, wenn Sie ungültige Koordinaten angeben.
Nochmals ETA: OK, obwohl die Dokumentation dies nicht erwähnt (ungezogenes Microsoft!), Stellt sich heraus, dass der Indexer für DataGridView tatsächlich eine ArgumentOutOfRangeException auslöst, wenn Sie ungültige Koordinaten angeben. Faire Warnung.
quelle
Das wäre die Item-Eigenschaft: http://msdn.microsoft.com/en-us/library/0ebtbkkc.aspx
Vielleicht würde so etwas funktionieren:
quelle
Informationsquelle
Für Klammer:
ABER
Der Array-Indizierungsoperator kann nicht überladen werden . Typen können jedoch Indexer definieren, Eigenschaften, die einen oder mehrere Parameter annehmen. Indexerparameter sind wie Array-Indizes in eckigen Klammern eingeschlossen, aber Indexer-Parameter können als beliebig deklariert werden (im Gegensatz zu Array-Indizes, die ganzzahlig sein müssen).
Von MSDN
quelle
Wenn Sie C # 6 oder höher verwenden, können Sie die Ausdruckssyntax für den Nur-Get-Indexer verwenden:
public object this[int i] => this.InnerList[i];
quelle
quelle
new
Schlüsselwort qualifizieren.Informationen zu CLI C ++ (kompiliert mit / clr) finden Sie unter diesem MSDN-Link .
Kurz gesagt, eine Eigenschaft kann den Namen "Standard" erhalten:
quelle
Hier ist ein Beispiel, das einen Wert von einem internen Listenobjekt zurückgibt. Sollte Ihnen die Idee geben.
quelle
Wenn Sie den Array-Indexer meinen, überladen Sie dies, indem Sie einfach eine Indexer-Eigenschaft schreiben. Und Sie können Indexer-Eigenschaften überladen (so viele schreiben, wie Sie möchten), solange jede eine andere Parametersignatur hat
quelle