Operator [] Operator (C# Reference)

Eckige Klammern ([]) werden für Arrays, Indexer und Attribute verwendet.Square brackets ([]) are used for arrays, indexers, and attributes. Sie können auch mit Zeigern verwendet werden.They can also be used with pointers.

HinweiseRemarks

Auf einen Arraytyp folgt []:An array type is a type followed by []:

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 Klammern eingeschlossen:To access an element of an array, the index of the desired element is enclosed in brackets:

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 ein Arrayindex außerhalb des gültigen Bereichs liegt.An exception is thrown if an array index is out of range.

Der Arrayindizierungsoperator kann nicht überladen werden. Allerdings können Typen Indexer definieren sowie Eigenschaften, die einen oder mehrere Parameter annehmen.The array indexing operator cannot be overloaded; however, types can define indexers, and properties that take one or more parameters. Indexerparameter werden wie Arrayindizes in rechteckige Klammern eingeschlossen, können aber als beliebiger Typ deklariert werden, während Arrayindizes ganzzahlig sein müssen.Indexer parameters are enclosed in square brackets, just like array indexes, but indexer parameters can be declared to be of any type, unlike array indexes, which must be integral.

.NET Framework definiert z.B. einen Hashtable-Typ, der Schlüssel und Werte beliebigen Typs verknüpft:For example, the .NET Framework defines a Hashtable type that associates keys and values of arbitrary type:

System.Collections.Hashtable h = new System.Collections.Hashtable();
h["a"] = 123; // Note: using a string as the index.

Rechteckigen Klammern werden auch zum Angeben von Attributen verwendet:Square brackets are also used to specify Attributes:

// using System.Diagnostics;
[Conditional("DEBUG")] 
void TraceMethod() {}

Sie können rechteckige Klammern verwenden, um einen Zeiger zu referenzieren:You can use square brackets to index off a pointer:

unsafe void M()
{
    int[] nums = {0,1,2,3,4,5};
    fixed ( int* p = nums )
    {
        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 Begrenzungen durchgeführt.No bounds checking is performed.

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation.For more information, see the C# Language Specification. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.The language specification is the definitive source for C# syntax and usage.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-OperatorenC# Operators
ArraysArrays
IndexerIndexers
unsafeunsafe
fixed-Anweisungfixed Statement