Aracılığıyla paylaş


Özellik Dizini Bildirimi

Dizinli bir özelliği açıklamaya ilişkin söz dizimi C++ için Yönetilen Uzantılar Visual C++ 2010 öğesine değiştirildi.

Dizinlenmiş özelliklere ait Yönetilen Uzantılar dil desteğinin iki başlıca eksiği sınıf düzeyinde altsimge sağlamaya ilişkin yetersizliktir yani, tüm dizinlenmiş özelliklere bir ad verilmesi gereklidir ve böylece, örneğin, bir Vector veya bir Matrix sınıf nesnesine doğrudan uygulanabilen yönetilen bir alt simge işlecini sağlamanın yolu yoktur. Daha düşük öneme sahip ikinci eksiklik ise özelliği dizili bir özellikten ayırt etmenin görsel açıdan zor olmasıdır (parametre sayısı tek göstergedir). Son olarak, dizine alınmış olan özellikler dizine alınmamış olan özellikler ile aynı sorunlarla karşılaşır - erişimciler atomik bir birim olarak ele alınmaz, ayrı ayrı yöntemlere dağıtılmış olarak ele alınır. Örneğin:

public __gc class Vector;
public __gc class Matrix {
   float mat[,];

public: 
   __property void set_Item( int r, int c, float value);
   __property float get_Item( int r, int c );

   __property void set_Row( int r, Vector* value );
   __property Vector* get_Row( int r );
};

Burada gördüğünüz gibi, dizinleyiciler yalnızca iki veya tek boyutlu bir dizini belirten ek parametrelerle ayrılırlar. Yeni sözdiziminde, dizin oluşturucular dizin oluşturucuyu takip eden ve her dizinin sayısını ve türünü belirten bir ayraç ([,]) tarafından ayırt edilir:

public ref class Vector {};
public ref class Matrix {
private:
   array<float, 2>^ mat;

public:
   property float Item [int,int] {
      float get( int r, int c );
      void set( int r, int c, float value );
   }

   property Vector^ Row [int] {
      Vector^ get( int r );
      void set( int r, Vector^ value );
   }
};

Sınıfın nesnelerine doğrudan uygulanabilen bir sınıf seviye dizin oluşturucusunu yeni söz dizimi içinde göstermek için açık bir ismin yerini almak üzere default anahtar kelimesi yeniden kullanılır. Örneğin:

public ref class Matrix {
private:
   array<float, 2>^ mat;

public:
   // ok: class level indexer now
   //
   //     Matrix mat …
   //     mat[ 0, 0 ] = 1; 
   //
   // invokes the set accessor of the default indexer …

   property float default [int,int] {
      float get( int r, int c );
      void set( int r, int c, float value );
   }

   property Vector^ Row [int] {
      Vector^ get( int r );
      void set( int r, Vector^ value );
   }
};

Yeni sözdiziminde, varsayılan dizinli özellik belirtilmiş olduğunda, aşağıdaki iki ad korunur: get_Item ve set_Item. Bu, varsayılan dizine alınmış özellik için oluşturulan arka plandaki adlardan kaynaklanır.

Basit özellikli sözdizimine benzer bir basit dizinli sözdizimi mevcut değildir.

Ayrıca bkz.

Kavramlar

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

How to: Use Indexed Properties