Deklaracja indeksu właściwości
Składnia deklaracji Właściwość indeksowana zmienił się z zarządzanych rozszerzeń języka C++ do Visual C++.
Dwa podstawowe niedociągnięcie obsługę rozszerzeń zarządzanych języka właściwości indeksowanych jest niemożność zapewnienia poziomie klasy subscripting; oznacza to, wszystkie właściwości indeksowane są wymagane, aby nadać nazwę, a tym samym nie ma, na przykład, zapewnienie zarządzanych operatora indeksu dolnego, który może być stosowana bezpośrednio do Vector lub Matrix obiektu klasy.Drugi mniej znaczące braków jest, że wizualnie trudno odróżnić od Właściwość indeksowana właściwość jest-liczba parametrów jest jedynym wpisem.Na koniec właściwości indeksowanych cierpią na takie same problemy jak w przypadku właściwości nieindeksowanych-akcesorów nie są traktowane jako jednostka niepodzielny, ale podzielone na poszczególne metody. Na przykład:
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 );
};
Jak widać w tym miejscu, indeksatory różnią się dodatkowych parametrów, aby określić dwa lub pojedynczego wymiaru indeksu.W nowych składni indeksatory wyróżniają się nawiasu ([],) po nazwie indeksowanie i podając liczbę i typ każdego indeksu:
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 );
}
};
Aby wskazać indeksatora poziomu klasy, które mogą być stosowane bezpośrednio do obiektów klasy w nową składnię, default słowa kluczowego zostanie ponownie użyty do zastąpienia jawnej nazwy.Na przykład:
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 );
}
};
W nowych składni, gdy domyślne indeksowane określona właściwość, dwa następujące nazwy są zarezerwowane: get_Item i set_Item.Dlatego są podstawowym nazwy generowane dla właściwości indeksowanych domyślne.
Zauważ, że jest brak składni prostego indeksu analogiczne do składnia właściwości prostych.
Zobacz też
Koncepcje
Deklaracje członków w obrębie klasy lub interfejsu (C++/CLI)