陣列 (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
陣列維度的數目。 必須為 1。identifier
陣列變數的名稱。initialization-type
初始化陣列值的型別。 通常, array-type 和 initialization-type 是相同型別。 不過,型別可以不同,如果有從 initialization-type 的轉換為 array-type—範例的,則為,否則 initialization-type 從 array-type衍生。[選擇項]initialization-list
在初始化陣列的元素的花括號的值的逗號分隔清單。 例如,如果是, rank-size-list(3),宣告一維陣列三個項目, initialization list 可能是 {1,2,3}。
備註
您可以在編譯時期偵測出來。型別是否與 __is_ref_array(type)的參考計數的陣列。 如需詳細資訊,請參閱型別特性的編譯器支援 (C++ 元件擴充功能)。
需求
編譯器選項: /ZW
範例
下列範例會建立具有 100x100 個元素的一維陣列。
// 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();
}
Common Language Runtime
語法
語法中的第一個範例使用 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
陣列維度的數目。 預設值為";最大值為字元。 陣列的每個維度本身就是陣列。identifier
陣列變數的名稱。initialization-type
初始化陣列值的型別。 通常, array-type 和 initialization-type 是相同型別。 不過,型別可以不同,如果有從 initialization-type 的轉換為 array-type—範例的,則為,否則 initialization-type 從 array-type衍生。rank-size-list
每個維度的大小的逗號分隔清單在陣列中。 或者,則為,否則 initialization-list 參數指定,編譯器無法推算每個維度的大小,並 rank-size-list 可以省略。 如需詳細資訊,請參閱How to: 建立多維陣列。[選擇項]initialization-list
在初始化陣列的元素的花括號的值的逗號分隔清單。 或者在初始化多維陣列的項目巢狀 初始化清單 項目的逗號分隔清單。例如,如果是, rank-size-list(3),宣告一維陣列三個項目, initialization list 可能是 {1,2,3}。 如果 rank-size-list 是 (3,2,4),宣告三個元素三維陣列中第一個維度的,在的兩個項目在第二和第三個的四個元素, initialization-list 可能是 {{1,2,3},{0,0},{-5,10,-21,99}})。
備註
在arrayPlatform、default 和 cli 命名空間 (C++ 元件擴充功能) 命名空間。
如同 Standard C++,陣列的索引是以零起始的,因此,陣列 subscripted 使用方括弧 ([])。 不同於標準 C++,多維陣列索引索引清單指定為每個維度而不是使用一組正方形方括弧 ([]) 運算子為每個維度。 例如, 識別碼[index1] ",而不是 識別碼[index1]"。
所有 Managed 陣列從 System::Array繼承。 System::Array 任何方法或屬性可以直接套用到陣列變數。
當您將項目型別是指向 Managed 類別的陣列時,項目會初始化。
當您將項目型別是實值型別 V的陣列時, V 的預設建構函式套用至每個陣列元素。 如需詳細資訊,請參閱C++ 原生型別的 .NET Framework 對應項 (C++/CLI)。
在編譯時期,您可以偵測型別是否與 __is_ref_array(type)的一個 Common Language Runtime (CLR) 陣列。 如需詳細資訊,請參閱型別特性的編譯器支援 (C++ 元件擴充功能)。
需求
編譯器選項: /clr
範例
下列範例會建立具有 100x100 個元素的一維陣列和有三個中第一個維度的三維陣列,在的五個項目在第二和第三個的六個元素。
// 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();
}