Matrici (Estensioni del componente C++)
Il tipo Platform::Array<T> in C++/CX o la parola chiave array in C++/CLI, dichiara un array di un tipo e valore iniziale specificati.
Tutte le piattaforme
L'array deve essere dichiarato utilizzando il modificatore dell'handle a oggetto (^) dopo la chiusura delle parentesi angolari (>) nella dichiarazione.
Il numero di elementi dell'array non fa parte del tipo. Una variabile array può fare riferimento ad array di diverse dimensioni.
Diversamente dallo standard C++, la sottoscrizione non è sinonimo dell'aritmetica dei puntatori e non è commutativa.
Per ulteriori informazioni sugli array, vedere:
Procedura: Creare matrici di matrici gestite (matrici di matrici)
Procedura: Matrici gestite di utilizzo come parametri di tipo di modello
Procedura: Ordinare le matrici tramite i criteri personalizzati
Windows Runtime
Gli array sono membri dello spazio dei nomi Platform. Gli array possono essere solo unidimensionali.
Sintassi
Il primo esempio della sintassi utilizza la parola chiave di aggregazione ref new per allocare un array. Il secondo esempio dichiara un array locale.
[qualifiers] [Platform::]Array<[qualifiers] array-type [,rank]>^ identifier = ref new [Platform::]Array< initialization-type > [{initialization-list [,...]}]
[qualifiers] [Platform::]Array<[qualifiers] array-type [,rank]>^ identifier = {initialization-list [,...]}
qualifiers [facoltativo]
Uno o più di questi identificatori di classe di archiviazione: mutabile, volatile, const, esterno, statico.array-type
Il tipo della variabile dell'array. I tipi validi sono classi di Windows Runtime e i tipi fondamentali, classi e strutture di riferimento, classi e strutture di valore e puntatori nativi (type*).rank [facoltativo]
Numero di dimensioni della matrice. Deve essere 1.identifier
Il nome della variabile array.initialization-type
Il tipo dei valori che inizializzano l'array. In genere, array-type e initialization-type sono lo stesso tipo. Tuttavia, i tipi possono essere differenti se esiste una conversione da initialization-type a array-type, ad esempio se initialization-type è derivato da array-type.initialization-list [facoltativo]
Un elenco di valori delimitati da virgole tra parentesi curve che inizializza gli elementi dell'array. Ad esempio, se rank-size-list fosse (3), che dichiara un array unidimensionale di 3 elementi, initialization list potrebbe essere {1,2,3}.
Osservazioni
È possibile rilevare in fase di compilazione se un tipo è un array di riferimento calcolato con __is_ref_array(type). Per ulteriori informazioni, vedere Supporto del compilatore per tratti di tipo (Estensioni del componente C++).
Requisiti
Opzione del compilatore: /ZW
Esempi
L'esempio seguente crea un array unidimensionale con 100 elementi.
// cwr_array.cpp
// compile with: /ZW
using namespace Platform;
ref class MyClass {};
int main() {
// one-dimensional array
Array<MyClass^>^ My1DArray = ref new Array<MyClass^>(100);
My1DArray[99] = ref new MyClass();
}
Common Language Runtime
Sintassi
Il primo esempio della sintassi utilizza la parola chiave gcnew per allocare un array. Il secondo esempio dichiara un array locale.
[qualifiers] [cli::]array<[qualifiers] array-type [,rank] >^ identifier = gcnew [cli::]array< initialization-type [,rank] >(rank-size-list[,...]) [{initialization-list [,...]}]
[qualifiers] [cli::]array<[qualifiers] array-type [,rank] >^ identifier = {initialization-list [,...]}
qualifiers [facoltativo]
Uno o più di questi identificatori di classe di archiviazione: mutabile, volatile, const, esterno, statico.array-type
Il tipo della variabile dell'array. I tipi validi sono classi di Windows Runtime e tipi di base, classi e strutture di riferimento, classi e strutture di valore, puntatori nativi (type*) e tipi nativi POD (dati non aggiornati) normali.rank [facoltativo]
Numero di dimensioni della matrice. L'impostazione predefinita è 1; il valore massimo è 32. Ogni dimensione dell'array è essa stessa un array.identifier
Il nome della variabile array.initialization-type
Il tipo dei valori che inizializzano l'array. In genere, array-type e initialization-type sono lo stesso tipo. Tuttavia, i tipi possono essere differenti se esiste una conversione da initialization-type a array-type, ad esempio se initialization-type è derivato da array-type.rank-size-list
Un elenco delimitato da virgole della dimensione di ogni dimensione dell'array. In alternativa, se il parametro di initialization-list viene specificato, il compilatore può dedurre la misura di ciascuna dimensione e rank-size-list può essere omesso. Per ulteriori informazioni, vedere Procedura: Creare matrici di Multidimension.initialization-list [facoltativo]
Un elenco di valori delimitati da virgole tra parentesi curve che inizializza gli elementi dell'array. O un elenco delimitato da virgole di elementi annidati di initialization-list che inizializzano gli elementi in un array multidimensionale.Ad esempio, se rank-size-list fosse (3), che dichiara un array unidimensionale di 3 elementi, initialization list potrebbe essere {1,2,3}. Se rank-size-list fosse (3,2,4), che dichiara un array tridimensionale di 3 elementi nella prima dimensione, 2 elementi nella seconda e 4 elementi nella terza, initialization-list potrebbe essere {{1,2,3},{0,0},{-5,10,-21,99}}).
Osservazioni
array è nello spazio dei nomi Spazi dei nomi Platform, default e cli (Estensioni del componente C++).
Come C++ standard, gli indici di un array sono in base zero e un array è sottoscritto utilizzando le parentesi quadre ([]). Diversamente dallo standard C++, gli indici di un array multidimensionale vengono specificati in un elenco di indici per ogni dimensione anziché un set di operatori di parentesi quadra ([]) per ogni dimensione. Ad esempio, identifier[index1, index2] al posto di identifier[index1][ index2].
Tutte gli array gestiti ereditano da System::Array. Qualsiasi metodo o proprietà di System::Array può essere applicata direttamente alla variabile di array.
Quando si alloca un array il cui tipo di elemento è puntatore ad una classe gestita, gli elementi sono inizializzati a 0.
Quando si alloca un array il cui tipo di elemento è un tipo di valore V, il costruttore predefinito per V viene applicato a ogni elemento dell'array. Per ulteriori informazioni, vedere Equivalenti di .NET Framework a tipi nativi C++ (C++/CLI).
In fase di compilazione, è possibile rilevare se un tipo è un array di Common Language Runtime (CLR) con __is_ref_array(type). Per ulteriori informazioni, vedere Supporto del compilatore per tratti di tipo (Estensioni del componente C++).
Requisiti
Opzione del compilatore: /clr
Esempi
L'esempio seguente crea un array unidimensionale con 100 elementi e un array tridimensionale con 3 elementi nella prima dimensione, 5 elementi nella seconda e 6 elementi nella terza.
// clr_array.cpp
// compile with: /clr
ref class MyClass {};
int main() {
// one-dimensional array
array<MyClass ^> ^ My1DArray = gcnew array<MyClass ^>(100);
My1DArray[99] = gcnew MyClass();
// three-dimensional array
array<MyClass ^, 3> ^ My3DArray = gcnew array<MyClass ^, 3>(3, 5, 6);
My3DArray[0,0,0] = gcnew MyClass();
}