数组(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 [,...]}
  • 限定符 [Optional]
    一个或多个存储类说明符:变量volatileconst外部静态

  • 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++ 组件扩展)

ts4c4dw6.collapse_all(zh-cn,VS.110).gif要求

编译器选项:/ZW

ts4c4dw6.collapse_all(zh-cn,VS.110).gif示例

下面的示例创建包含 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 [,...]}
  • 限定符 [Optional]
    一个或多个存储类说明符:变量volatileconst外部静态

  • 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++ 组件扩展)

ts4c4dw6.collapse_all(zh-cn,VS.110).gif要求

编译器选项:/clr

ts4c4dw6.collapse_all(zh-cn,VS.110).gif示例

下面的示例在创建具有 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();
}

请参见

概念

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