Operator [] (C#-Referenz)
Eckige Klammern ([]) werden für Arrays, Indexer und Attribute verwendet. Sie können auch mit Zeigern verwendet werden.
Ein Arraytyp ist ein Typ, auf den [] folgen.
int[] fib; // fib is of type int[], "array of int" fib = new int[100]; // create a 100-element int array
Um auf ein Element eines Arrays zuzugreifen, wird der Index des gewünschten Elements in eckige Klammern eingeschlossen:
fib[0] = fib[1] = 1; for( int i=2; i<100; ++i ) fib[i] = fib[i-1] + fib[i-2];
Eine Ausnahme wird ausgelöst, wenn sich ein Arrayindex außerhalb des gültigen Bereichs befindet.
Der Arrayindizierungsoperator kann nicht überladen werden. Typen können jedoch Indexer und Eigenschaften definieren, die mindestens einen Parameter aufweisen. Indexerparameter werden genau so wie Arrayindizes in eckige Klammern eingeschlossen. Indexerparameter können aber als beliebiger Typ deklariert werden, während Arrayindizes immer ganzzahlig sein müssen.
.NET Framework definiert z. B. einen Hashtable-Typ, der Schlüssel und Werte beliebigen Typs verknüpft:
Collections.Hashtable h = new Collections.Hashtable(); h["a"] = 123; // note: using a string as the index
Eckige Klammern werden auch verwendet, um Attribute (C#-Programmierhandbuch) anzugeben:
[attribute(AllowMultiple=true)]
public class Attr
{
}
Sie können eckige Klammern verwenden, um die Indizierung eines Zeigers aufzuheben:
unsafe fixed ( int* p = fib ) // p points to fib from earlier example
{
p[0] = p[1] = 1;
for( int i=2; i<100; ++i ) p[i] = p[i-1] + p[i-2];
}
Es wird keine Überprüfung der Grenzen durchgeführt.
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
-
1.6.6.5 Operatoren
-
7.2 Operatoren
Referenz
C#-OperatorenIndexer (C#-Programmierhandbuch)
unsafe (C#-Referenz)
fixed-Anweisung (C#-Referenz)
Konzepte
C# ProgrammierhandbuchArrays (C#-Programmierhandbuch)