Visual Studio 2010 - Visual C# [] Operator (C# Reference) Square brackets ([]) are used for arrays, indexers, and attributes. They can also be used with pointers.

Remarks
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.
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];
An exception is thrown if an array index is out of range. The array indexing operator cannot be overloaded; however, types can define indexers, and properties that take one or more parameters. 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. 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.
Square brackets are also used to specify Attributes (C# and Visual Basic):
// using System.Diagnostics;
[Conditional("DEBUG")]
void TraceMethod() {}
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];
}
}
No bounds checking is performed.

C# Language Specification
For more information, see the C# Language Specification. The language specification is the definitive source for C# syntax and usage.

See Also
ReferenceConceptsOther Resources
|
Visual Studio 2010 - Visual C# Operator [] (C#-Referenz) Eckige Klammern ([]) werden für Arrays, Indexer und Attribute verwendet. Sie können auch mit Zeigern verwendet werden.

Hinweise
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 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:
System.Collections.Hashtable h = new System.Collections.Hashtable();
h["a"] = 123; // Note: using a string as the index.
Eckige Klammern werden auch verwendet, um Attribute (C# und Visual Basic) anzugeben:
// using System.Diagnostics;
[Conditional("DEBUG")]
void TraceMethod() {}
Sie können eckige Klammern verwenden, um die Indizierung eines Zeigers aufzuheben:
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 Grenzen durchgeführt.

C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch
ReferenzKonzepteWeitere Ressourcen
|