Tablice (C++/CLI i C++/CX)

Typ Platform::Array<T> w języku C++/CX lub słowo kluczowe tablicy w języku C++/CLI deklaruje tablicę określonego typu i wartości początkowej.

Wszystkie platformy

Tablica musi być zadeklarowana przy użyciu modyfikatora handle-to-object (^) po nawiasie zamykającym (>) w deklaracji . Liczba elementów tablicy nie jest częścią typu. Jedna zmienna tablicowa może odwoływać się do tablic o różnych rozmiarach.

W przeciwieństwie do standardowego języka C++, indeks dolny nie jest synonimem arytmetyki wskaźnika i nie jest przemijający.

Aby uzyskać więcej informacji na temat tablic, zobacz:

Środowisko wykonawcze systemu Windows

Tablice są elementami członkowskimi Platform przestrzeni nazw. Tablice mogą być tylko jednowymiarowe.

Składnia

Pierwszy przykład składni używa nowego zagregowanego słowa kluczowego ref do przydzielenia tablicy. Drugi przykład deklaruje tablicę lokalną.

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

Kwalifikatory
(Opcjonalnie) Co najmniej jeden z tych specyfikatorów klasy magazynu: modyfikowalny, lotny, const, extern, statyczny.

typ tablicy
Typ zmiennej tablicowej. Prawidłowe typy to środowisko wykonawcze systemu Windows klasy i typy podstawowe, klasy ref i struktury, klasy wartości i struktury oraz wskaźniki natywne (type*).

Rank
(Opcjonalnie) Liczba wymiarów tablicy. Musi mieć wartość 1.

Identyfikator
Nazwa zmiennej tablicowej.

typ inicjowania
Typ wartości, które inicjują tablicę. Zazwyczaj typ tablicy i typ inicjowania są tego samego typu. Jednak typy mogą się różnić, jeśli istnieje konwersja typu inicjalizacji na typ-tablicy — na przykład jeśli typ inicjowania pochodzi z typu tablicy.

initialization-list
(Opcjonalnie) Rozdzielana przecinkami lista wartości w nawiasach klamrowych, które inicjują elementy tablicy. Jeśli na przykład lista-rozmiar-rangi to (3), która deklaruje jednowymiarową tablicę 3 elementów, lista inicjowania może mieć wartość {1,2,3}.

Uwagi

W czasie kompilacji można wykryć, czy typ jest tablicą zliczaną odwołania za pomocą polecenia __is_ref_array(type). Aby uzyskać więcej informacji, zobacz Obsługa kompilatora dla cech typów.

Wymagania

Opcja kompilatora: /ZW

Przykłady

Poniższy przykład tworzy tablicę jednowymiarową zawierającą 100 elementów.

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

środowiska uruchomieniowe w trakcie wykonania

Składnia

Pierwszy przykład składni używa słowa kluczowego gcnew do przydzielenia tablicy. Drugi przykład deklaruje tablicę lokalną.

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

Kwalifikatory
(Opcjonalnie) Co najmniej jeden z tych specyfikatorów klasy magazynu: modyfikowalny, lotny, const, extern, statyczny.

typ tablicy
Typ zmiennej tablicowej. Prawidłowe typy to środowisko wykonawcze systemu Windows klasy i typy podstawowe, klasy ref i struktury, klasy wartości i struktury, wskaźniki natywne (type*) i natywne typy zasobników (zwykłych starych danych).

Rank
(Opcjonalnie) Liczba wymiarów tablicy. Wartość domyślna to 1; wartość maksymalna to 32. Każdy wymiar tablicy jest samą tablicą.

Identyfikator
Nazwa zmiennej tablicowej.

typ inicjowania
Typ wartości, które inicjują tablicę. Zazwyczaj typ tablicy i typ inicjowania są tego samego typu. Jednak typy mogą się różnić, jeśli istnieje konwersja typu inicjalizacji na typ-tablicy — na przykład jeśli typ inicjowania pochodzi z typu tablicy.

rank-size-list
Rozdzielana przecinkami lista rozmiaru każdego wymiaru w tablicy. Alternatywnie, jeśli określono parametr initialization-list , kompilator może wyłuskić rozmiar każdego wymiaru i listy rangi można pominąć.

initialization-list
(Opcjonalnie) Rozdzielana przecinkami lista wartości w nawiasach klamrowych, które inicjują elementy tablicy. Lub rozdzielana przecinkami lista zagnieżdżonych elementów list inicjowania, które inicjują elementy w tablicy wielowymiarowej.

Jeśli na przykład lista-rozmiar-rangi to (3), która deklaruje jednowymiarową tablicę 3 elementów, lista inicjowania może mieć wartość {1,2,3}. Jeśli lista-rozmiar-rangi to (3,2,4), która deklaruje trójwymiarową tablicę 3 elementów w pierwszym wymiarze, 2 elementy w drugim i 4 elementy na trzeciej liście inicjowania może być {{1,2,3},{0,0},{-5,10,-21,99}}.)

Uwagi

tablica znajduje się w przestrzeni nazw Platform, default i cli Przestrzenie nazw.

Podobnie jak w przypadku standardowego języka C++, indeksy tablicy są oparte na zera, a tablica jest indeksowana za pomocą nawiasów kwadratowych ([]). W przeciwieństwie do standardowego języka C++, indeksy tablicy wielowymiarowej są określane na liście indeksów dla każdego wymiaru zamiast zestawu operatorów nawiasów kwadratowych ([]) dla każdego wymiaru. Na przykład identyfikator[index1, index2] zamiast identyfikatora[index1][ index2].

Wszystkie tablice zarządzane dziedziczą z .System::Array Dowolną System::Array metodę lub właściwość obiektu można zastosować bezpośrednio do zmiennej tablicowej.

W przypadku przydzielenia tablicy, której typ elementu jest wskaźnikiem do klasy zarządzanej, elementy są inicjowane 0.

Po przydzieleniu tablicy, której typ elementu jest typem Vwartości , domyślny konstruktor dla V jest stosowany do każdego elementu tablicy. Aby uzyskać więcej informacji, zobacz .NET Framework Odpowiedniki typów natywnych języka C++ (C++/CLI).

W czasie kompilacji można wykryć, czy typ jest tablicą środowiska uruchomieniowego języka wspólnego (CLR) za pomocą polecenia __is_ref_array(type). Aby uzyskać więcej informacji, zobacz Obsługa kompilatora dla cech typów.

Wymagania

Opcja kompilatora: /clr

Przykłady

Poniższy przykład tworzy tablicę jednowymiarową zawierającą 100 elementów, a trójwymiarową tablicę zawierającą 3 elementy w pierwszym wymiarze, 5 elementów w drugim i 6 elementów w trzecim.

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

Zobacz też

Rozszerzenia składników dla platformy .NET i platformy uniwersalnej systemu Windows