数组(C++ 组件扩展)
Platform::Array<T> 输入 C++/CX,或者在 C++/CLI的 array 关键字,声明一个指定类型值和原始值的。
所有平台
必须声明数组使用处理的对象 (^) 修饰符在右尖括号后面 (>) 在声明。
数组的元素数不属于该类型的一部分。 一个数组变量可以引用不同的范围。
不同于标准 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 [,...]}
array-type
数组变量的类型。 有效的类型是 Windows 运行时 选件类和基础类型、ref 选件类和结构、值选件类和结构和本机指针 (type*)。rank [optional]
数组的维数。 必须为 1。identifier
数组变量的名称。initialization-type
初始化该数组值的类型。 通常,array-type 和 initialization-type 是同一类型。 但是,类型可以不同,如果具有从 initialization-type 的转换到 array-type—示例,则为;如果 initialization-type 从 array-type派生。initialization-list [optional]
逗号分隔列表在初始化数组的元素的花括号的值。 例如,因此,如果 rank-size-list 是 (3),声明一维数组 3 个元素,initialization list 可能是 {1,2,3}。
备注
可以检测在编译时类型是否与 __is_ref_array(type)的引用计数的数组。 有关更多信息,请参见编译器支持类型特征(C++ 组件扩展)。
要求
编译器选项:/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();
}
公共语言运行时
语法
语法中的第一个示例使用 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 [,...]}
array-type
数组变量的类型。 有效的类型是 Windows 运行时 选件类和基础类型、ref 选件类和结构、值选件类和结构、本机指针 (type*) 和本机 POD (纯旧数据) 类型。rank [optional]
数组的维数。 默认值为 1;该最大值为 32。 数组的每一维本身数组。identifier
数组变量的名称。initialization-type
初始化该数组值的类型。 通常,array-type 和 initialization-type 是同一类型。 但是,类型可以不同,如果具有从 initialization-type 的转换到 array-type—示例,则为;如果 initialization-type 从 array-type派生。rank-size-list
逗号分隔列表每个维度的大小数组的。 或者,如果 initialization-list 参数指定,编译器可以推断出每个维度的大小,还 rank-size-list 可以省略。 有关更多信息,请参见如何:创建 Multidimension 数组。initialization-list [optional]
逗号分隔列表在初始化数组的元素的花括号的值。 或逗号分隔的初始化是多维数组元素的列表嵌套 初始化列表 项目。例如,因此,如果 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}}。)
备注
array 在 Platform、default 和 cli 命名空间(C++ 组件扩展) 命名空间。
象标准 C++,数组的索引是从零开始的,所以,并且数组 subscripted 使用括号 ([])。 不同于标准 C++,则多维数组的索引在索引列表指定为每一维而不是设置正方形括号 ([]) 运算符为每一维。 例如,标识符[index1,index2] 而不是 标识符[index1][ index2]。
所有托管数组从 System::Array继承。 System::Array 任何方法或属性可直接应用于数组变量。
将元素类型是指向托管选件类的数组时,元素 0 初始化。
将元素类型是值类型 V的数组时,V 的默认构造函数应用于每个数组元素。 有关更多信息,请参见对应于 C++ 本机类型的 .NET Framework 类型 (C++/CLI)。
在编译时,可以检测类型是否与 __is_ref_array(type)的公共语言运行时 (CLR) 数组。 有关更多信息,请参见编译器支持类型特征(C++ 组件扩展)。
要求
编译器选项:/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();
}