Compartilhar via


Propriedade índice declaração

A sintaxe para declarar uma propriedade indexada mudou de gerenciado Extensions para C++ para Visual C++ 2008.

Os dois shortcoming principal do suporte a linguagem Managed Extensions de propriedades indexadas é a incapacidade de fornecer o nível de classe subscripting; ou seja, todas as propriedades indexadas são necessárias para receber um nome e, portanto, não é possível, por exemplo, para fornecer um operador de subscrito gerenciado que pode ser aplicado diretamente a um Vector ou Matrix objeto de classe. Um segundo menos shortcoming significativa é que é difícil distinguir uma propriedade de uma propriedade indexada visualmente – o número de parâmetros é a única indicação.Por fim, propriedades indexadas sofrem com sistema autônomo mesmos problemas que sistema autônomo das propriedades não-indexados – sistema autônomo acessadores não são tratados sistema autônomo uma unidade atômica, mas separados em métodos individuais.Por exemplo:

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

sistema autônomo você pode ver, sistema autônomo indexadores são diferenciados somente pelos parâmetros adicionais para especificar um, dois ou um único índice de dimensão.Na sintaxe de novo, os indexadores são diferenciados por colchete (,) após o nome do indexador e indicando o número e o tipo de cada índice:

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

Para indicar um indexador de nível de classe que pode ser aplicado diretamente a objetos da classe na nova sintaxe, a default palavra-chave é reutilizada para substituir um nome explícito. Por exemplo:

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

Na sintaxe de novo, quando a propriedade indexado padrão é especificada, os dois seguintes nomes são reservados: get_Item e set_Item.Isso ocorre porque esses são os nomes subjacentes gerados para a propriedade Indexado do padrão.

Observe que nenhuma sintaxe de índice simples é parecido com a sintaxe da propriedade simples.

Consulte também

Conceitos

Declarações de membro dentro de uma classe ou interface

Como: Use Indexed Propriedades