Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Deklaruje właściwość, która jest funkcją składową, która zachowuje się i jest uzyskiwana dostęp do elementu członkowskiego danych lub elementu tablicy.
Wszystkie środowiska uruchomieniowe
Można zadeklarować jeden z następujących typów właściwości.
właściwość simple
Domyślnie tworzy metodęsetdostępu, która przypisuje wartość właściwości, metodę dostępu pobierającągetwartość właściwości oraz element członkowski danych prywatnych wygenerowany przez kompilator, który zawiera wartość właściwości.blok właściwości
Użyj bloku właściwości, aby utworzyć zdefiniowane przezgetużytkownika lubsetmetody dostępu. Właściwość jest odczytywana i zapisywana, jeśligetzarówno metody dostępu, jak isetsą zdefiniowane, tylko do odczytu, jeśligettylko metodę dostępu jest zdefiniowana, i tylko zapis, jeśli zdefiniowano tylkosetmetodę dostępu.Musisz jawnie zadeklarować element członkowski danych, aby zawierał wartość właściwości.
właściwość indeksowana
Blok właściwości, którego można użyć do pobierania i ustawiania wartości właściwości określonej przez co najmniej jeden indeks.Można utworzyć właściwość indeksowaną, która ma nazwę właściwości zdefiniowanej przez użytkownika lub domyślną nazwę właściwości. Nazwa domyślnej właściwości indeksu to nazwa klasy, w której zdefiniowano właściwość. Aby zadeklarować właściwość domyślną, określ
defaultsłowo kluczowe zamiast nazwy właściwości.
Jawnie zadeklaruj element członkowski danych, aby zawierał wartość właściwości. W przypadku właściwości indeksowanej element członkowski danych jest zazwyczaj tablicą lub kolekcją.
Składnia
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};
}
Parametry
type
Typ danych wartości właściwości i samej właściwości.
property_name
Nazwa właściwości.
access-modifier
Kwalifikator dostępu. Prawidłowe kwalifikatory to static i virtual.
Lub get set akcesoriów nie muszą zgadzać się na virtual kwalifikator, ale muszą zgodzić się na static kwalifikator.
inheritance-modifier
Kwalifikator dziedziczenia. Prawidłowe kwalifikatory to abstract i sealed.
index_list
Rozdzielana przecinkami lista co najmniej jednego indeksu. Każdy indeks składa się z typu indeksu i opcjonalnego identyfikatora, który może być używany w treści metody właściwości.
value
Wartość, która ma zostać przypisana do właściwości w set operacji, lub pobrana w get operacji.
property_body
Treść set metody właściwości lub get metody dostępu. Obiekt property_body może użyć index_list elementu , aby uzyskać dostęp do bazowego elementu członkowskiego danych właściwości lub jako parametry w przetwarzaniu zdefiniowanym przez użytkownika.
Środowisko wykonawcze systemu Windows
Aby uzyskać więcej informacji, zobacz Właściwości (C++/CX).
Wymagania
Opcja kompilatora: /ZW
środowiska uruchomieniowe w trakcie wykonania
Składnia
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];
}
Parametry
modifier
Modyfikator, który może być używany w deklaracji właściwości lub metodzie dostępu get/set. Możliwe wartości to static i virtual.
type
Typ wartości reprezentowanej przez właściwość .
property_name
Parametry dla raise metody; muszą być zgodne z podpisem delegata.
index_list
Rozdzielana przecinkami lista co najmniej jednego indeksu określona w nawiasach kwadratowych (operator indeksu dolnego, []). Dla każdego indeksu określ typ i opcjonalnie identyfikator, który może być używany w treści metody właściwości.
Uwagi
W pierwszym przykładzie składni przedstawiono prostą właściwość, która niejawnie deklaruje zarówno metodę , jak set i get . Kompilator automatycznie tworzy pole prywatne do przechowywania wartości właściwości.
Drugi przykład składni przedstawia blok właściwości, który jawnie deklaruje metodę set i .get
Trzeci przykład składni przedstawia właściwość indeksu zdefiniowanego przez klienta. Właściwość indeksu przyjmuje parametry oprócz wartości, która ma zostać ustawiona lub pobrana. Określ nazwę właściwości. W przeciwieństwie do prostej właściwości metody set i get właściwości indeksu muszą być jawnie zdefiniowane, dlatego należy określić nazwę właściwości.
Czwarty przykład składni przedstawia właściwość domyślną, która zapewnia dostęp przypominający tablicę do wystąpienia typu. Słowo kluczowe , defaultsłuży tylko do określania właściwości domyślnej. Nazwa właściwości domyślnej to nazwa typu, w którym zdefiniowano właściwość.
Słowo property kluczowe może być wyświetlane w klasie, interfejsie lub typie wartości. Właściwość może mieć get funkcję (tylko do odczytu), set funkcję (tylko do zapisu) lub obie (odczyt-zapis).
Nazwa właściwości nie może być zgodna z nazwą klasy zarządzanej, która ją zawiera. Zwracany typ funkcji getter musi być zgodny z typem ostatniego parametru odpowiedniej funkcji setter.
W kodzie klienta właściwość ma wygląd zwykłego elementu członkowskiego danych i może być zapisywana na podstawie lub odczytywana przy użyciu tej samej składni co składowa danych.
Metody get i set nie muszą zgadzać się na virtual modyfikator.
Dostępność get metody i set może się różnić.
Definicja metody właściwości może pojawić się poza treścią klasy, podobnie jak zwykła metoda.
Metoda get i set dla nieruchomości uzgadniają static modyfikator.
Właściwość jest skalarna, jeśli jej get metody pasują set do następującego opisu:
Metoda
getnie ma parametrów i ma zwracany typT.Metoda
setma parametr typuT, i zwraca typvoid.
Istnieje tylko jedna właściwość skalarna zadeklarowana w zakresie o tym samym identyfikatorze. Nie można przeciążyć właściwości skalarnych.
Po zadeklarowaniu elementu członkowskiego danych właściwości kompilator wprowadza składową danych — czasami nazywaną magazynem zapasowym — w klasie. Jednak nazwa składowej danych jest taka, że nie można odwoływać się do składowej w źródle tak, jakby była to rzeczywista składowa danych zawierającej klasę. Użyj ildasm.exe, aby wyświetlić metadane typu i wyświetlić nazwę wygenerowaną przez kompilator dla magazynu kopii zapasowych właściwości.
Różne ułatwienia dostępu są dozwolone dla metod dostępu w bloku właściwości. Oznacza to, że set metoda może być public i get metoda może być private. Jednak jest to błąd metody dostępu, aby mieć mniej restrykcyjne ułatwienia dostępu niż to, co znajduje się w deklaracji samej właściwości.
property jest kontekstowym słowem kluczowym. Aby uzyskać więcej informacji, zobacz Kontekstowe słowa kluczowe.
Wymagania
Opcja kompilatora: /clr
Przykłady
Poniższy przykład przedstawia deklarację i użycie elementu członkowskiego danych właściwości i bloku właściwości. Pokazuje również, że można zdefiniować metodę dostępu właściwości poza klasą.
// 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);
}
test
21
Zobacz też
Rozszerzenia składników dla platformy .NET i platformy uniwersalnej systemu Windows