Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Тип Platform::Array<T> в C++/CX или ключевое слово array в C++/CLI объявляет массив указанного типа и начальное значение.
Все платформы
Массив должен быть объявлен с помощью модификатора handle-to-object (^) после закрывающей угловой скобки (>) в объявлении. Количество элементов массива не является частью типа. Одна переменная массива может ссылаться на массивы разных размеров.
В отличие от стандартной версии C++, индексация не идентична арифметическим операциям над указателями и не коммутативна.
Дополнительные сведения о массивах см. в следующих разделах:
Среда выполнения Windows
Массивы являются членами пространства имен Platform. Они могут быть только одномерными.
Синтаксис
В первом примере синтаксиса используется агрегатное ключевое слово ref new, чтобы выделить память для массива. Во втором примере объявляется локальный массив.
[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
(Необязательно) Один или несколько из следующих спецификаторов класса хранения: mutable, volatile, const, extern, static.
array-type
Тип переменной массива. Допустимые типы: основные типы и классы среды выполнения Windows, ссылочные классы и структуры, классы и структуры значений, а также собственные указатели (type*).
rank
(Необязательно) Получает число измерений массива. Должен иметь значение 1.
идентификатор
Имя переменной массива.
initialization-type
Тип значений, которые инициализируют массив. Как правило array-type и initialization-type относятся к одному типу. Однако типы могут быть разными, если есть преобразование из initialization-type в array-type. Например, если initialization-type получен из array-type.
initialization-list
(Необязательно) Разделенный запятыми список инициализирующих элементы массива значений в фигурных скобках. Например, если rank-size-list имеет значение (3), т. е. объявляется одномерным массивом из 3 элементов, initialization-list может иметь вид {1,2,3}.
Замечания
Во время компиляции с помощью __is_ref_array(type) можно определить, является ли тип массивом с подсчетом ссылок. Дополнительные сведения см. в статье Compiler Support for Type Traits (C++/CLI and C++/CX) (Поддержка признаков типов компилятором (C++/CLI и C++/CX)).
Требования
Параметр компилятора: /ZW
Примеры
В следующем примере создается одномерный массив из 100 элементов.
// 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
Синтаксис
В первом примере синтаксиса используется ключевое слово gcnew, чтобы выделить память для массива. Во втором примере объявляется локальный массив.
[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
(Необязательно) Один или несколько из следующих спецификаторов класса хранения: mutable, volatile, const, extern, static.
array-type
Тип переменной массива. Допустимые типы: основные типы и классы среды выполнения Windows, ссылочные классы и структуры, классы и структуры значений, собственные указатели (type*) и собственные типы POD.
rank
(Необязательно) Получает число измерений массива. Значение по умолчанию — 1; максимальное число — 32. Каждое измерение массива само является массивом.
идентификатор
Имя переменной массива.
initialization-type
Тип значений, которые инициализируют массив. Как правило array-type и initialization-type относятся к одному типу. Однако типы могут быть разными, если есть преобразование из initialization-type в array-type. Например, если initialization-type получен из array-type.
rank-size-list
Разделенный запятыми список размеров каждого измерения массива. Если задан параметр initialization-list, компилятор может определить размер каждого измерения, и тогда параметр rank-size-list можно опустить.
initialization-list
(Необязательно) Разделенный запятыми список инициализирующих элементы массива значений в фигурных скобках. Или разделенный запятыми список вложенных элементов initialization-list, инициализирующих элементы в многомерном массиве.
Например, если rank-size-list имеет значение (3), т. е. объявляется одномерным массивом из 3 элементов, initialization-list может иметь вид {1,2,3}. Если параметр rank-size-list имеет значение (3,2,4), т. е. объявляется трехмерным массивом с 3 элементами в первом измерении, 2 элементами во втором и 4 элементами в третьем, то параметр initialization-list может иметь вид {{1,2,3},{0,0},{-5,10,-21,99}}.
Замечания
Массив находится в пространстве имен Platform, default, and cli Namespaces.
Как и в стандартной версии C++, индексы массива начинаются от нуля, и массив индексируется с помощью квадратных скобок ([]). В отличие от стандартной версии C++, индексы многомерного массива указываются в списке индексов каждого измерения вместо набора операторов квадратных скобок ([]) для каждого измерения. Например, идентификатор[индекс1, индекс2] вместо идентификатор[индекс1][индекс2].
Все управляемые массивы являются производными от System::Array. Любой метод или свойство System::Array может применяться непосредственно к переменной массива.
При создании массива указателей на управляемый класс элементы массива инициализируются нулем.
При создании массива, тип элементов которого является типом значения V, к каждому элементу массива применяется конструктор по умолчанию для V. Дополнительные сведения см. в разделе Эквиваленты собственным типам C++ в .NET framework.
Во время компиляции с помощью __is_ref_array(type) можно определить, является ли тип массивом среды CLR. Дополнительные сведения см. в статье Compiler Support for Type Traits (C++/CLI and C++/CX) (Поддержка признаков типов компилятором (C++/CLI и C++/CX)).
Требования
Параметр компилятора: /clr
Примеры
В следующем примере создается одномерный массив из 100 элементов и трехмерный массив с 3 элементами в первом измерении, 5 элементами во втором и 6 элементами в третьем.
// 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();
}