Aracılığıyla paylaş


özellik (C++ Bileşen Uzantıları)

Bir özellik bildirir, ki bu bir veri üyesi ya da bir dizi öğesi gibi davranan ve erişilen bir üye işlevidir.

Tüm Çalışma Zamanları

Aşağıdaki özellik türlerinden birini bildirebilirsiniz.

  • basit özellik
    Varsayılan olarak, özellik değerini atayan bir set erişimcisi, özellik değerini alan bir get erişimcisi, ve özellik değerini saklayan derleyici tarafından üretilen bir özel veri üyesi oluşturur.

  • özellik bloğu
    Kullanıcı tanımlı get ve/veya set erişimcileri oluşturmak için bunu kullanın.Özellik eğer hem get hem de set erişimcileri tanımlı ise okunur/yazılır, yalnızca get erişimcisi tanımlı ise salt okunur, ve yalnızca set erişimcisi tanımlı ise salt yazılırdır.

    Özellik değerini içermesi için açık olarak bir veri üyesi bildirmelisiniz.

  • dizinli özellik
    Bir ya da daha fazla dizin tarafından belirlenen bir özellik değerini almak ya da ayarlamak için kullanabileceğiniz bir özellik bloğu.

    Ya bir kullanıcı tanımlı özellik adına ya da bir varsayılan özellik adına sahip olan bir dizinli özellik oluşturabilirsiniz.Varsayılan bir dizinli özelliğin adı özelliğin tanımlı olduğu sınıfın adıdır.Bir varsayılan özellik bildirmek için, özellik adı yerine default anahtar sözcüğünü belirtin.

    Özellik değerini içermesi için açık olarak bir veri üyesi bildirmelisiniz.Bir dizinli özellik için, veri üyesi genellikle bir dizi ya da koleksiyondur.

es7h5kch.collapse_all(tr-tr,VS.110).gifSözdizimi

   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};
   }

es7h5kch.collapse_all(tr-tr,VS.110).gifParametreler

  • type
    Özellik değerinin veri türü, ve ardından özelliğin kendisi.

  • property_name
    Özelliğin adı.

  • access-modifier
    Bir erişim niteleyicisi.Geçerli niteleyiciler static ve virtual değerleridir.

    Get ya da set erişimcileri virtual niteleyicisi üzerinde anlaşmayabilirler, ama static niteleyicisi üzerinde anlaşmaları gerekir.

  • inheritance-modifier
    Bir devralma niteleyicisi.Geçerli niteleyiciler abstract ve sealed değerleridir.

  • index_list
    Bir ya da daha fazla dizinin virgülle ayrılmış bir listesi.Her dizin bir dizin türü, ve özellik yöntem gövdesinde kullanılabilecek isteğe bağlı bir tanımlayıcıdan oluşur.

  • value
    Bir set işleminde özelliğe atanacak, ya da bir get işleminde alınacak değer.

  • property_body
    Set ya da get erişimcisinin özellik yöntem gövdesi.property_body temeldeki özellik veri üyesine, ya da kullanıcı tanımlı işleme içinde parametreler olarak erişmek için index_list kullanabilir.

Windows Çalışma Zamanı

Daha fazla bilgi için bkz. Özellikler (C++/CX).

es7h5kch.collapse_all(tr-tr,VS.110).gifGereksinimler

Derleyici seçeneği: /ZW

Ortak Dil Çalışma Zamanı

Sözdizimi

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];
}

Parametreler

  • modifier
    Bir özellik bildirimi ya da bir get/set erişimci yöntemi üzerinde kullanılabilecek bir değiştirici.Mümkün değerler static ve virtual değerleridir.

  • type
    Özellik tarafından temsil edilen değerin türü.

  • property_name
    raise yöntemi için parametre(ler); temsilcinin imzası ile eşleşmelidir.

  • index list
    Bir ya da daha fazla dizinin köşeli ayraçlar içinde (altsimge işleci, ([])) belirtilen virgülle ayrılmış bir listesi.Her dizin için, bir tür ve isteğe bağlı olarak özellik yöntemi gövdesinde kullanılabilen bir tanımlayıcı belirtin.

Notlar

İlk sözdizimi örneği bir basit özellik gösterir, ki bu örtük olarak hem bir set hem de bir get yöntemi bildirir.Derleyici özelliğin değerini depolamak için otomatik olarak özel bir alan oluşturur.

İkinci sözdizimi örneği bir özellik bloğu gösterir, ki bu açıkça hem bir set hem de bir get yöntemi bildirir.

Üçüncü sözdizimi örneği müşteri tarafından tanımlanan bir dizin özelliği gösterir.Bir dizin özelliği ayarlanacak ya da alınacak değere ek olarak parametreler alır.Özellik için bir ad belirtmelisiniz.Bir basit özelliğin aksine, bir dizin özelliğinin set ve/veya get yöntemleri açıkça tanımlanmalıdır, ve özellik için bir ad belirtmeniz gerekir.

Dördüncü sözdizimi örneği bir varsayılan özellik gösterir, ki bu türün bir örneğine dizi benzeri erişim sağlar.default anahtar sözcüğü yalnızca bir varsayılan özellik belirtmek için kullanılır.Varsayılan özelliğin adı özelliğin tanımlı olduğu türün adıdır.

property anahtar sözcüğü bir sınıf, arabirim ya da değer türü içinde bulunabilir.Bir özellik get işlevine (salt okunur), set işlevine (salt yazılır) ya da ikisine birden (okunur yazılır) sahip olabilir.

Bir özellik adı onu içeren yönetilen sınıfın adıyla eşleşemez.Alıcı işlevin dönüş türü karşılık gelen ayarlayıcı işlevin son parametresinin türü ile eşleşmelidir.

İstemci kod için, bir özellik sıradan bir veri üyesi görünümüne sahiptir, ve bir veri üyesi ile aynı sözdizimi kullanarak okunup yazılabilir.

Get ve set yöntemleri, virtual değiştiricisi üzerinde anlaşmayabilirler.

Get ve set yöntemlerinin erişilebilirliği farklı olabilir.

Bir özellik yönteminin tanımı sıradan bir yöntem gibi sınıf gövdesinin dışında olabilir.

Bir özelliğin get ve set yöntemleri static değiştiricisi üzerinde anlaşmalıdır.

Bir özellik eğer get ve set yöntemleri aşağıdaki açıklamaya uyuyorsa skalardır:

  • Get yönteminin parametresi yoktur, ve T dönüş türüne sahiptir.

  • Set yönteminin T türü bir parametresi ve void dönüş türü vardır.

Aynı tanımlayıcı ile bir kapsam içinde yalnızca tek bir bildirilen skalar özellik olabilir.Skalar özellikler aşırı yüklenemez.

Bir özellik veri üyesi bildirildiğinde, derleyici sınıfın içine bir veri üyesi - bazen "yedekleme deposu" da denir - ekler.Ancak, veri üyesinin adının biçimi sanki içeren sınıfın gerçekten bir veri üyesiymiş gibi kaynak içinde üyeye başvuracağınız şekilde değildir.Türünüz için meta verileri görmek ve özelliğin yedekleme deposu için derleyicinin oluşturduğu adı görmek için ildasm.exe'yi kullanın.

Bir özellik bloğu içinde erişimci yöntemler için farklı erişilebilirliklere izin verilir.Yani, set yöntemi genel ve get yöntemi özel olabilir.Ancak, bir erişimci yöntemin özelliğin kendi bildirimindekinden daha az sınırlayıcı bir erişimi olması bir hatadır.

property bağlama duyarlı bir anahtar sözcüktür.Daha fazla bilgi için bkz. Bağlama Duyarlı Anahtar Sözcükler (C++ Bileşen Uzantıları).

Özellikler hakkında daha fazla bilgi için, bkz.

es7h5kch.collapse_all(tr-tr,VS.110).gifGereksinimler

Derleyici seçeneği: /clr

es7h5kch.collapse_all(tr-tr,VS.110).gifÖrnekler

Aşağıdaki örnek bir özellik veri üyesinin ve bir özellik bloğunun bildirimini ve kullanımını gösterir.Ayrıca bir özellik erişimcisinin sınıf dışında da tanımlanabildiğini gösterir.

// 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);
}

Çıktı

  
  

Ayrıca bkz.

Kavramlar

Çalışma platformları için bileşen uzantıları