数组(C++ 组件扩展)

输入 C++/CX,Platform::Array<T> 或 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 [,...]}
  • qualifiers (可选)
    一个或多个这些存储类说明符:mutable变量const外部静态的

  • array-type
    数组的元素类型。 有效的类型是 Windows 运行时 类以及基础类型、ref 类和值类、结构和结构的本机指针 (type*)。

  • rank(可选)
    数组的维数。 必须为 1。

  • identifier
    窗体变量的名称。

  • 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)的引用计数的数组。 有关详细信息,请参阅编译器支持类型特征(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 [,...]}
  • qualifiers (可选)
    一个或多个这些存储类说明符:mutable变量const外部静态的

  • array-type
    数组的元素类型。 有效的类型是 Windows 运行时 类以及基础类型、ref 类和结构、值类和结构、本机指针 (type*) 和本机 POD (纯旧数据) 类型。

  • rank(可选)
    数组的维数。 默认为 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(可选)
    逗号分隔值列表。初始化数组的元素花括号的。 或者初始化在一个多维数组的元素嵌套的 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}}。)

备注

array 是Platform、default 和 cli 命名空间(C++ 组件扩展)命名空间中的类型。

与标准 C++,数组索引从零开始,所以,数组就 subscripted 使用方括号 ([])。 与标准 C++,一种多维数组的索引。索引列表指定为每一维而非一组正方形括号 ([]) 运算符为每一维。 例如,identifier[index1, index2]替代为 identifier[index1][ index2]

所有托管数组从 System::Array继承。 所有 System::Array 方法或属性可直接应用于数组变量。

当您分配元素类型为指针对托管类的数组时,元素 0 初始化。

当您分配元素类型就是"值类型 V的数组时,V 的默认构造函数应用于数组的每个元素。 有关详细信息,请参阅对应于 C++ 本机类型的 .NET Framework 类型 (C++/CLI)

在编译时,可以检测类型是否与 __is_ref_array(type)的公共语言运行时 (CLR) (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();
}

请参见

概念

适用于运行时平台的组件扩展