Bagikan melalui


property (C++/CLI dan C++/CX)

Mendeklarasikan properti, yang merupakan fungsi anggota yang berulah dan diakses seperti anggota data atau elemen array.

Semua runtime

Anda dapat mendeklarasikan salah satu jenis properti berikut.

  • properti sederhana
    Secara default, membuat set aksesor yang menetapkan nilai properti, get aksesor yang mengambil nilai properti, dan anggota data privat yang dihasilkan kompilator yang berisi nilai properti.

  • blok properti
    Gunakan blok properti untuk membuat aksesor atau set yang ditentukan get pengguna. Properti dibaca dan ditulis jika aksesor get dan set ditentukan, baca-saja jika hanya get aksesor yang ditentukan, dan tulis-saja jika hanya set aksesor yang ditentukan.

    Anda perlu secara eksplisit menyatakan anggota data untuk berisi nilai properti.

  • properti terindeks
    Blok properti yang bisa Anda gunakan untuk mendapatkan dan mengatur nilai properti yang ditentukan oleh satu atau beberapa indeks.

    Anda dapat membuat properti terindeks yang memiliki nama properti yang ditentukan pengguna atau nama properti default . Nama properti indeks default adalah nama kelas tempat properti ditentukan. Untuk mendeklarasikan properti default, tentukan default kata kunci alih-alih nama properti.

Secara eksplisit menyatakan anggota data berisi nilai properti. Untuk properti terindeks, anggota data biasanya merupakan array atau koleksi.

Sintaks

property type property_name;

property type property_name {
   access-modifier type get() inheritance-modifier {property_body};
   access-modifier void set(type value) inheritance-modifier {property_body};
}

property type property_name[index_list] {
   access-modifier type get(index_list) inheritance-modifier {property_body};
   access-modifier void set(index_list, value) inheritance-modifier {property_body};
}

property type default[index_list] {
   access-modifier type get(index_list) inheritance-modifier {property_body};
   access-modifier void set(index_list, value) inheritance-modifier {property_body};
}

Parameter

type
Jenis data nilai properti, dan properti itu sendiri.

property_name
Nama properti.

access-modifier
Kualifikasi akses. Kualifikasi yang valid adalah static dan virtual.

Pengases get atau set tidak perlu menyetujui virtual kualifikasi, tetapi mereka harus menyetujui static kualifikasi.

inheritance-modifier
Kualifikasi warisan. Kualifikasi yang valid adalah abstract dan sealed.

index_list
Daftar yang dibatasi koma dari satu atau beberapa indeks. Setiap indeks terdiri dari jenis indeks, dan pengidentifikasi opsional yang dapat digunakan dalam isi metode properti.

value
Nilai yang akan ditetapkan ke properti dalam set operasi, atau ambil dalam get operasi.

property_body
Isi metode properti dari set atau get aksesor. property_body dapat menggunakan index_list untuk mengakses anggota data properti yang mendasar, atau sebagai parameter dalam pemrosesan yang ditentukan pengguna.

Windows Runtime

Untuk informasi selengkapnya, lihat Properti (C++/CX).

Persyaratan

Opsi pengkompilasi: /ZW

Runtime Bahasa Umum

Sintaks

modifier property type property_name;

modifier property type property_name {
   modifier void set(type);
   modifier type get();
}
modifier property type property_name[index-list, value] {
   modifier void set(index-list, value);
   modifier type get(index-list);

modifier property type default[index];
}

Parameter

modifier
Pengubah yang dapat digunakan pada deklarasi properti atau metode aksesor get/set. Nilai yang mungkin adalah static dan virtual.

type
Jenis nilai yang diwakili oleh properti .

property_name
Parameter untuk raise metode ; harus cocok dengan tanda tangan delegasi.

index_list
Daftar yang dibatasi koma dari satu atau beberapa indeks, ditentukan dalam kurung siku (operator subskrip, []). Untuk setiap indeks, tentukan jenis dan secara opsional pengidentifikasi yang dapat digunakan dalam isi metode properti.

Keterangan

Contoh sintaks pertama menunjukkan properti sederhana, yang secara implisit set mendeklarasikan metode dan get . Pengkompilasi secara otomatis membuat bidang privat untuk menyimpan nilai properti.

Contoh sintaks kedua menunjukkan blok properti, yang secara eksplisit mendeklarasikan set metode dan get .

Contoh sintaks ketiga menunjukkan properti indeks yang ditentukan pelanggan. Properti indeks mengambil parameter selain nilai yang akan diatur atau diambil. Tentukan nama untuk properti . Tidak seperti properti sederhana, set metode dan get properti indeks harus ditentukan secara eksplisit, sehingga Anda harus menentukan nama untuk properti tersebut.

Contoh sintaks keempat menunjukkan properti default , yang menyediakan akses seperti array ke instans jenis. Kata kunci, default, hanya berfungsi untuk menentukan properti default. Nama properti default adalah nama jenis di mana properti ditentukan.

Kata property kunci dapat muncul di kelas, antarmuka, atau jenis nilai. Properti dapat memiliki get fungsi (baca-saja), set fungsi (tulis-saja), atau keduanya (baca-tulis).

Nama properti tidak dapat cocok dengan nama kelas terkelola yang berisinya. Jenis pengembalian fungsi getter harus cocok dengan jenis parameter terakhir dari fungsi setter yang sesuai.

Untuk kode klien, properti memiliki tampilan anggota data biasa, dan dapat ditulis atau dibaca dengan menggunakan sintaks yang sama dengan anggota data.

Metode get dan set tidak perlu menyetujui pengubah virtual .

Aksesibilitas get metode dan set dapat berbeda.

Definisi metode properti dapat muncul di luar badan kelas, sama seperti metode biasa.

Metode get dan set untuk properti harus menyetujui pengubah static .

Properti bersifat skalar jika get metode dan set sesuai dengan deskripsi berikut:

  • Metode get ini tidak memiliki parameter, dan memiliki jenis Tpengembalian .

  • Metode set ini memiliki parameter jenis T, dan jenis voidpengembalian .

Hanya akan ada satu properti skalar yang dideklarasikan dalam cakupan dengan pengidentifikasi yang sama. Properti skalar tidak dapat kelebihan beban.

Ketika anggota data properti dideklarasikan, pengkompilasi menyuntikkan anggota data—terkadang disebut sebagai "penyimpanan cadangan"—di kelas . Namun, nama anggota data adalah bentuk sehingga Anda tidak dapat mereferensikan anggota di sumber seolah-olah itu adalah anggota data aktual dari kelas yang berisi. Gunakan ildasm.exe untuk melihat metadata untuk jenis Anda dan lihat nama yang dihasilkan kompilator untuk penyimpanan backing properti.

Aksesibilitas yang berbeda diizinkan untuk metode aksesor dalam blok properti. Artinya, metodenya set bisa dan public metodenya get bisa .private Namun, ini adalah kesalahan bagi metode aksesor untuk memiliki aksesibilitas yang kurang ketat daripada apa yang ada pada deklarasi properti itu sendiri.

property adalah kata kunci yang sensitif terhadap konteks. Untuk informasi selengkapnya, lihat Kata kunci peka konteks.

Persyaratan

Opsi pengkompilasi: /clr

Contoh

Contoh berikut menunjukkan deklarasi dan penggunaan anggota data properti dan blok properti. Ini juga menunjukkan bahwa aksesor properti dapat didefinisikan di luar kelas.

// mcppv2_property.cpp
// compile with: /clr
using namespace System;
public ref class C {
   int MyInt;
public:

   // property data member
   property String ^ Simple_Property;

   // property block
   property int Property_Block {

      int get();

      void set(int value) {
         MyInt = value;
      }
   }
};

int C::Property_Block::get() {
   return MyInt;
}

int main() {
   C ^ MyC = gcnew C();
   MyC->Simple_Property = "test";
   Console::WriteLine(MyC->Simple_Property);

   MyC->Property_Block = 21;
   Console::WriteLine(MyC->Property_Block);
}
test

21

Lihat juga

Ekstensi Komponen untuk .NET dan UWP