Array (C++/CLI dan C++/CX)
Jenis Platform::Array<T>
dalam C++/CX, atau kata kunci array di C++/CLI, mendeklarasikan array dari jenis dan nilai awal yang ditentukan.
Semua Platform
Array harus dideklarasikan dengan menggunakan pengubah handle-to-object (^) setelah kurung sudut penutup (>) dalam deklarasi. Jumlah elemen array bukan bagian dari jenis. Satu variabel array dapat merujuk ke array dengan ukuran yang berbeda.
Tidak seperti C++standar, subskrip bukan sinonim untuk aritmatika pointer dan tidak komutatif.
Untuk informasi selengkapnya tentang array, lihat:
Windows Runtime
Array adalah anggota Platform
namespace layanan. Array hanya bisa satu dimensi.
Sintaks
Contoh pertama sintaks menggunakan kata kunci agregat baru ref untuk mengalokasikan array. Contoh kedua mendeklarasikan array lokal.
[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 [,...]}
Kualifikasi
(Opsional) Satu atau beberapa penentu kelas penyimpanan ini: dapat diubah, volatil, const, extern, statis.
jenis array
Jenis variabel array. Jenis yang valid adalah kelas Runtime Windows dan jenis dasar, kelas dan struktur ref, kelas dan struktur nilai, dan pointer asli (type*
).
rank
(Opsional) Jumlah dimensi array. Harus 1.
identifier
Nama variabel array.
jenis inisialisasi
Jenis nilai yang menginisialisasi array. Biasanya, jenis array dan jenis inisialisasi adalah jenis yang sama. Namun, jenisnya bisa berbeda jika ada konversi dari jenis inisialisasi ke jenis array—misalnya, jika jenis inisialisasi berasal dari jenis array.
daftar inisialisasi
(Opsional) Daftar nilai yang dibatasi koma dalam tanda kurung kurawal yang menginisialisasi elemen array. Misalnya, jika daftar ukuran peringkat adalah (3)
, yang mendeklarasikan array satu dimensi dari 3 elemen, daftar inisialisasi bisa menjadi {1,2,3}
.
Keterangan
Anda dapat mendeteksi pada waktu kompilasi apakah jenis adalah array yang dihitung referensi dengan __is_ref_array(type)
. Untuk informasi selengkapnya, lihat Dukungan Pengkompilasi untuk Jenis Sifat.
Persyaratan
Opsi pengkompilasi: /ZW
Contoh
Contoh berikut membuat array satu dimensi yang memiliki 100 elemen.
// 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();
}
Runtime Bahasa Umum
Sintaks
Contoh pertama sintaks menggunakan kata kunci gcnew untuk mengalokasikan array. Contoh kedua mendeklarasikan array lokal.
[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 [,...]}
Kualifikasi
(Opsional) Satu atau beberapa penentu kelas penyimpanan ini: dapat diubah, volatil, const, extern, statis.
jenis array
Jenis variabel array. Jenis yang valid adalah kelas Windows Runtime dan jenis dasar, kelas dan struktur ref, kelas dan struktur nilai, pointer asli (type*
), dan jenis POD asli (data lama biasa).
rank
(Opsional) Jumlah dimensi array. Defaultnya adalah 1; maksimum adalah 32. Setiap dimensi array adalah array itu sendiri.
identifier
Nama variabel array.
jenis inisialisasi
Jenis nilai yang menginisialisasi array. Biasanya, jenis array dan jenis inisialisasi adalah jenis yang sama. Namun, jenisnya bisa berbeda jika ada konversi dari jenis inisialisasi ke jenis array—misalnya, jika jenis inisialisasi berasal dari jenis array.
daftar ukuran peringkat
Daftar yang dibatasi koma dari ukuran setiap dimensi dalam array. Atau, jika parameter daftar inisialisasi ditentukan, pengompilasi dapat menyimpulkan ukuran setiap dimensi dan daftar ukuran peringkat dapat dihilangkan.
daftar inisialisasi
(Opsional) Daftar nilai yang dibatasi koma dalam tanda kurung kurawal yang menginisialisasi elemen array. Atau daftar item daftar inisialisasi berlapis yang dibatasi koma yang menginisialisasi elemen dalam array multi-dimensi.
Misalnya, jika daftar ukuran peringkat adalah (3)
, yang mendeklarasikan array satu dimensi dari 3 elemen, daftar inisialisasi bisa menjadi {1,2,3}
. Jika daftar ukuran peringkat adalah (3,2,4)
, yang mendeklarasikan array tiga dimensi dari 3 elemen dalam dimensi pertama, 2 elemen di elemen kedua, dan 4 di ketiga, inisialisasi-daftar bisa menjadi {{1,2,3},{0,0},{-5,10,-21,99}}
.)
Keterangan
array berada di namespace layanan Namespace Layanan Platform, default, dan cli.
Seperti C++standar, indeks array berbasis nol, dan array disubskripsikan dengan menggunakan kurung siku ([]). Tidak seperti C++standar, indeks array multidimensi ditentukan dalam daftar indeks untuk setiap dimensi alih-alih sekumpulan operator kurung siku ([]) untuk setiap dimensi. Misalnya, pengidentifikasi[index1, index2] alih-alih pengidentifikasi[index1][ index2].
Semua array terkelola mewarisi dari System::Array
. Metode atau properti System::Array
apa pun dapat diterapkan langsung ke variabel array.
Saat Anda mengalokasikan array yang jenis elemennya adalah pointer-to-a managed class, elemen diinisialisasi 0.
Saat Anda mengalokasikan array yang jenis elemennya adalah jenis V
nilai , konstruktor default untuk V
diterapkan ke setiap elemen array. Untuk informasi selengkapnya, lihat .NET Framework Equivalents to C++ Native Type (C++/CLI).
Pada waktu kompilasi, Anda dapat mendeteksi apakah jenis adalah array runtime bahasa umum (CLR) dengan __is_ref_array(type)
. Untuk informasi selengkapnya, lihat Dukungan Pengkompilasi untuk Jenis Sifat.
Persyaratan
Opsi pengkompilasi: /clr
Contoh
Contoh berikut membuat array satu dimensi yang memiliki 100 elemen, dan array tiga dimensi yang memiliki 3 elemen dalam dimensi pertama, 5 elemen di elemen kedua, dan 6 di elemen ketiga.
// 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();
}