Operatore (Riferimenti per C#)
Le parentesi quadre ([]) vengono utilizzate per le matrici, gli indicizzatori e gli attributi,ma possono essere utilizzate anche per i puntatori.
Note
Un tipo matrice è un tipo seguito da []:
int[] fib; // fib is of type int[], "array of int".
fib = new int[100]; // Create a 100-element int array.
Per consentire l'accesso a un elemento di una matrice, l'indice dell'elemento desiderato viene racchiuso tra parentesi:
fib[0] = fib[1] = 1;
for (int i = 2; i < 100; ++i) fib[i] = fib[i - 1] + fib[i - 2];
Se l'indice di una matrice non è incluso nell'intervallo, viene generata un'eccezione.
L'operatore di indicizzazione della matrice non può essere sottoposto a overload; tuttavia, i tipi possono definire gli indicizzatori nonché le proprietà che accettano uno o più parametri.I parametri dell'indicizzatore sono racchiusi tra parentesi quadre, come qualsiasi indice di matrice, ma, differentemente da questi ultimi che devono essere integrali, possono essere dichiarati come appartenenti a un tipo qualsiasi.
In .NET Framework, ad esempio, viene definito un tipo Hashtable che associa chiavi e valori di tipo arbitrario:
System.Collections.Hashtable h = new System.Collections.Hashtable();
h["a"] = 123; // Note: using a string as the index.
Le parentesi quadre vengono inoltre utilizzate per specificare Attributi (C# e Visual Basic):
// using System.Diagnostics;
[Conditional("DEBUG")]
void TraceMethod() {}
È possibile utilizzare le parentesi quadre per effettuare l'indicizzazione a partire da un puntatore:
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];
}
}
Non viene effettuata alcuna verifica dei limiti.
Specifiche del linguaggio C#
Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.
Vedere anche
Riferimenti
Matrici (Guida per programmatori C#)
Indicizzatori (Guida per programmatori C#)
Istruzione fixed (Riferimenti per C#)