Pole (C++/CLI a C++/CX)

Typ Platform::Array<T> v jazyce C++/CX nebo klíčové slovo pole v jazyce C++/CLI deklaruje pole zadaného typu a počáteční hodnoty.

Všechny platformy

Pole musí být deklarováno pomocí modifikátoru handle-to-object (^) za pravou úhlovou závorku (>) v deklaraci. Počet prvků pole není součástí typu. Jedna proměnná pole může odkazovat na pole různých velikostí.

Na rozdíl od standardního jazyka C++ není dolní index synonymem pro aritmetické ukazatele a není commutativní.

Další informace o polích najdete tady:

prostředí Windows Runtime

Pole jsou členy Platform oboru názvů. Pole můžou být pouze jednorozměrná.

Syntaxe

První příklad syntaxe používá nové agregační klíčové slovo odkaz k přidělení pole. Druhý příklad deklaruje místní pole.

[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 [,...]}

Kvalifikátory
(Volitelné) Jeden nebo více z těchto specifikátorů třídy úložiště: proměnlivé, nestálé, const, extern, statické.

typ pole
Typ proměnné pole. Platné typy jsou prostředí Windows Runtime třídy a základní typy, třídy ref a struktury, třídy hodnot a struktury a nativní ukazatele (type*).

Hodnost
(Volitelné) Počet dimenzí pole. Musí být 1.

identifikátor
Název proměnné pole.

inicializační typ
Typ hodnot, které inicializují pole. Typ pole a inicializace jsou obvykle stejný typ. Typy se ale můžou lišit, pokud existuje převod z inicializačního typu na typ pole – například pokud je inicializační typ odvozen z typu pole.

inicializační seznam
(Volitelné) Čárkami oddělený seznam hodnot ve složených závorkách, které inicializují prvky pole. Pokud byl například seznam rank-size-list (3) , který deklaruje jednorozměrné pole 3 prvků, může být {1,2,3}inicializační seznam .

Poznámky

V době kompilace můžete zjistit, zda typ je pole počítané odkazem s __is_ref_array(type). Další informace naleznete v tématu Podpora kompilátoru pro vlastnosti typu.

Požadavky

Možnost kompilátoru: /ZW

Příklady

Následující příklad vytvoří jednorozměrné pole, které má 100 prvků.

// 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();
}

CLR (Common Language Runtime)

Syntaxe

První příklad syntaxe používá klíčové slovo gcnew k přidělení pole. Druhý příklad deklaruje místní pole.

[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 [,...]}

Kvalifikátory
(Volitelné) Jeden nebo více z těchto specifikátorů třídy úložiště: proměnlivé, nestálé, const, extern, statické.

typ pole
Typ proměnné pole. Platné typy jsou prostředí Windows Runtime třídy a základní typy, třídy ref a struktury, třídy hodnot a struktury, nativní ukazatele (type*) a nativní typy POD (prostý starých dat).

Hodnost
(Volitelné) Počet dimenzí pole. Výchozí hodnota je 1; maximum je 32. Každá dimenze pole je sama o sobě pole.

identifikátor
Název proměnné pole.

inicializační typ
Typ hodnot, které inicializují pole. Typ pole a inicializace jsou obvykle stejný typ. Typy se ale můžou lišit, pokud existuje převod z inicializačního typu na typ pole – například pokud je inicializační typ odvozen z typu pole.

rank-size-list
Čárkami oddělený seznam velikosti jednotlivých dimenzí v matici. Pokud je zadán parametr inicializace-seznam, může kompilátor odvodit velikost každé dimenze a seznam pořadí velikost-list je možné vynechat.

inicializační seznam
(Volitelné) Čárkami oddělený seznam hodnot ve složených závorkách, které inicializují prvky pole. Nebo čárkami oddělený seznam vnořených inicializačních položek seznamu , které inicializují prvky v multidimenzionálním poli.

Pokud byl například seznam rank-size-list (3) , který deklaruje jednorozměrné pole 3 prvků, může být {1,2,3}inicializační seznam . Pokud bylo (3,2,4)pořadí-velikost-seznam , který deklaruje trojrozměrnou matici 3 prvků v první dimenzi, 2 prvky ve druhé a 4 prvky ve třetí, inicializační seznam může být {{1,2,3},{0,0},{-5,10,-21,99}}.)

Poznámky

pole je v oboru názvů Platformy, výchozí a cli.

Stejně jako u standardního jazyka C++ jsou indexy pole založené na nule a pole je dolní indexováno pomocí hranatých závorek ([]). Na rozdíl od standardního jazyka C++ jsou indexy multidimenzionálního pole zadány v seznamu indexů pro každou dimenzi místo sady operátorů hranaté závorky ([]) pro každou dimenzi. Například identifikátor[index1; index2] místo identifikátoru[index1][ index2].

Všechna spravovaná pole dědí z System::Array. Libovolnou metodu System::Array nebo vlastnost lze použít přímo na proměnnou pole.

Když přidělíte pole, jehož typ elementu je ukazatel na spravovanou třídu, prvky jsou inicializovány 0.

Když přidělíte pole, jehož typ prvku je typ Vhodnoty , výchozí konstruktor pro je použit pro V každý prvek pole. Další informace naleznete v tématu .NET Framework Ekvivalenty nativních typů C++ (C++/CLI).

V době kompilace můžete zjistit, zda je typem pole CLR (Common Language Runtime) s __is_ref_array(type). Další informace naleznete v tématu Podpora kompilátoru pro vlastnosti typu.

Požadavky

Možnost kompilátoru: /clr

Příklady

Následující příklad vytvoří jednorozměrné pole, které má 100 prvků, a trojrozměrné pole, které má 3 prvky v první dimenzi, 5 prvků v sekundě a 6 prvků ve třetí.

// 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();
}

Viz také

Přípony komponent pro .NET a UPW