Aracılığıyla paylaş


Özellik Bildirimi

Yönetilen bir sınıfta bir özelliği bildirme yolu C++ için Yönetilen Uzantılardan Visual C++ 2010 öğesine değişti.

Yönetilen Uzantılar tasarımında, her set ya da get özellik erişimcisi bağımsız bir yöntem olarak belirtilir. Her yöntemin bildirimine __property anahtar kelimesi önek olarak eklenir. Yöntem adı ya set_ ile ya da get_ ile başlar ve özelliğin gerçek adı tarafından (kullanıcıya görünür şekilde) izlenir. Böylece, bir x koordinat get özelliği sağlayan bir Vector bunu get_x olarak adlandıracaktır ve kullanıcı bunu x olarak çağıracaktır. Yöntemlerin bu adlandırma kuralları ve ayrı belirtimleri, aslında özelliğin temelindeki çalışma zamanı uygulamasını yansıtmaktadır. Örneğin, İşte bizim koordinat özellikleri kümesi içeren Vector özelliğimiz:

public __gc __sealed class Vector {
public:
   __property double get_x(){ return _x; }
   __property double get_y(){ return _y; }
   __property double get_z(){ return _z; }

   __property void set_x( double newx ){ _x = newx; }
   __property void set_y( double newy ){ _y = newy; }
   __property void set_z( double newz ){ _z = newz; }
};

Bu, özellikle ilişkili işlevselliği genişletir ve kullanıcının ilişkili ayarlamaları ve alınanları sözcüksel olarak birleştirmesini gerektirir. Bunun yanında, ayrıntılıdır. Daha çok C# gibi olan yeni sözdiziminde, property anahtar kelimesini özelliğin türü ve asıl adı takip eder. set ve get erişim yöntemleri özellik adını takip eden bir blok içinde yerleştirilir. C#'nin aksine, erişim yöntemi imzası belirtilir. Örneğin, yukarıda yeni sözdizimine çevrilmiş kod örneği vardır.

public ref class Vector sealed { 
public:
   property double x {
      double get() {
         return _x;
      }

      void set( double newx ) {
         _x = newx;
      }
   } // Note: no semi-colon
};

Özellik erişim yöntemleri farklı erişim düzeyleri gibi yansıtmak durumunda bir publicget ve private veya protectedset bir açık erişim etiketinde belirtilebilir. Varsayılan olarak, özelliğin erişim düzeyi, kapsayan erişim düzeyininkini yansıtır. Örneğin, yukarıdaki Vector tanımlaması içinde, hem get hem de set yöntemleri public durumdadır. set yöntemini protected veya private yapmak için tanımın aşağıdaki gibi değiştirilmesi gerekir:

public ref class Vector sealed { 
public:
   property double x {
      double get() {
         return _x;
      }

   private:
      void set( double newx ) {
         _x = newx;
      }

   } // note: extent of private culminates here …

// note: dot is a public method of Vector
double dot( const Vector^ wv );

// etc.
};

Gerek özelliğin kapanış ayracı gerekse ek bir erişim anahtarının belirtimine kadar bir özelliğin içindeki bir erişim anahtar kelimesinin kapsamı genişler. Özelliğin tanımlandığı çevreleyen erişim düzeyine kadar özelliğin tanımının dışına çıkmaz. Yukarıdaki bildirimde, örneğin, Vector::dot() ortak bir yöntemdir.

Vector koordinatları için ayarla/al özelliklerini yazma üç adımdan oluşur:

  1. uygun türe ait bir özel durum üyesi bildirin.

  2. Kullanıcı onun değerini almak istediğinde döndürün.

  3. ona yeni değer atayın.

Yeni sözdiziminde, bu kullanım şekillerini otomatikleştiren bir toplu özellik sözdizimi bulunur:

public ref class Vector sealed { 
public:
   // equivalent shorthand property syntax
   property double x; 
   property double y;
   property double z;
};

Toplu özellik sözdiziminin ilginç tarafı backstage durum üyesi derleyicisi tarafından oluşturulmasına rağmen ayarla/al erişimcilerinin aracılığı dışında sınıf içinde erişilememesidir.

Ayrıca bkz.

Başvuru

property

Kavramlar

Sınıfta veya Arayüzde Üye Bildirimleri