配列 (C++ コンポーネント拡張)
Platform::Array<T> は C++/CXの型、または C++/CLIの array キーワードは、指定した型と初期値の配列を宣言します。
すべてのプラットフォーム
配列は、右山かっこの後に (>) を使用する宣言でハンドルにオブジェクト (^) 修飾子を宣言する必要があります。
配列の要素数は、型の一部ではありません。 1 種類の配列変数には異なるサイズの配列を指定できます。
標準 C++ とは異なり、大きなはポインター演算のシノニム、シグネチャ性ではありません。
配列に関する詳細については、参照します:
Windows ランタイム
配列は Platform の名前空間のメンバーです。 配列は、1 次元となります。
構文
構文の最初の例では、配列を割り当てるに ref new の集計のキーワードを使用します。 2 番目の例は、ローカル配列を宣言します。
[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 [省略可能]
これらのストレージ クラスの指定子の一つ以上: 変更可能、volatile、定数、外部、静的。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 個の要素の 1 次元配列を宣言し、initialization list は {1,2,3}になる可能性があります。
解説
型が __is_ref_array(type)の参照カウント配列かどうかコンパイル時に検出できます。 詳細については、「型の特徴のコンパイラ サポート (C++ コンポーネント拡張)」を参照してください。
要件
コンパイラ オプション: /ZW
例
次の例では、三つの要素を持つ 100 1 次元配列を作成します。
// 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 キーワードを使用します。 2 番目の例は、ローカル配列を宣言します。
[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 [省略可能]
これらのストレージ クラスの指定子の一つ以上: 変更可能、volatile、定数、外部、静的。array-type
配列変数の型を指定します。 有効な型は Windows ランタイム クラスであり、基本型、ref クラスおよび構造体、値クラスおよび構造体、ネイティブ ポインター (type*)、およびネイティブ POD (plain old data) を選択します。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 は省略できます。 詳細については、「方法: 多次元配列を作成する」を参照してください。initialization-list [省略可能]
配列の要素を初期化する向きかっこの値のコンマ区切りのリスト。 または多次元配列要素を初期化する initialization-list 入れ子になった項目のコンマ区切りのリスト。たとえば、rank-size-list が (3)、3 個の要素の 1 次元配列を宣言し、initialization list は {1,2,3}になる可能性があります。 rank-size-list が (3,2,4)、最初の次元の二つの要素の 3 次元配列を宣言している要素は 2 個目、2 つ目の要素は 4 個、initialization-list は {{1,2,3},{0,0},{-5,10,-21,99}}style=Bold など)
解説
array は プラットフォーム、既定、および cli 名前空間 (C++ コンポーネント拡張) の名前空間にあります。
標準 C++ の場合と同様に、配列のインデックスはインデックス番号が 0 から始まるであり、配列は角かっこを使用して subscripted ([])。 標準 C++ とは異なり、多次元配列のインデックスは、一連の角かっこ ([]) 演算子ではなく、各次元に対してインデックス ボックスの一覧で、各次元に対して指定します。 たとえば、identifier[]index1の代わりに identifierindex1、index2[] [] index2。
すべてのマネージ配列には System::Arrayから継承します。 System::Array のメソッドやプロパティは、配列変数に直接適用できます。
要素の型は、マネージ クラス ポインターの配列を代入すると、要素は 0 初期化されます。
要素の型は値型である V配列を代入すると、V の既定のコンストラクターは、各配列要素に適用されます。 詳細については、「C++ ネイティブ型と等価な .NET Framework ネイティブ型 (C++/CLI)」を参照してください。
コンパイル時に、型が __is_ref_array(type)の共通言語ランタイム (CLR) の配列であるかどうかを確認できます。 詳細については、「型の特徴のコンパイラ サポート (C++ コンポーネント拡張)」を参照してください。
要件
コンパイラ オプション: /clr
例
次の例では、三つの要素を持つ 100 次元で、最初の三つの要素を持つ 3 次元配列は、5 個の要素 2 番目、および 6 番目の二つの要素が 1 次元配列を作成します。
// 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();
}