property
(C++/CLI ve C++/CX)
Veri üyesi veya dizi öğesi gibi davranan ve erişilen bir üye işlevi olan bir özelliği bildirir.
Tüm çalışma zamanları
Aşağıdaki özellik türlerinden birini bildirebilirsiniz.
simple özelliği
Varsayılan olarak, özellik değerini atayan birset
erişimci, özellik değerini alan birget
erişimci ve özellik değerini içeren derleyici tarafından oluşturulan bir özel veri üyesi oluşturur.özellik bloğu
Kullanıcı tanımlıget
veyaset
erişimci oluşturmak için bir özellik bloğu kullanın. hem hemset
deget
erişimcileri tanımlanmışsa özelliği okunur ve yazılır, yalnızcaget
erişimci tanımlanmışsa salt okunur ve yalnızcaset
erişimci tanımlanmışsa salt yazılır.Özellik değerini içermesi için bir veri üyesini açıkça bildirmeniz gerekir.
dizine alınan özellik
Bir veya daha fazla dizin tarafından belirtilen bir özellik değerini almak ve ayarlamak için kullanabileceğiniz özellik bloğu.Kullanıcı tanımlı özellik adına veya varsayılan özellik adına sahip dizine alınan bir özellik oluşturabilirsiniz. Varsayılan dizin özelliğinin adı, özelliğin tanımlandığı sınıfın adıdır. Varsayılan özelliği bildirmek için özellik adı yerine anahtar sözcüğünü belirtin
default
.
Özellik değerini içermesi için bir veri üyesini açıkça bildirin. Dizine alınan bir özellik için veri üyesi genellikle bir dizi veya koleksiyondur.
Sözdizimi
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};
}
Parametreler
type
Özellik değerinin veri türü ve özelliğin kendisi.
property_name
Özelliğin adı.
access-modifier
Erişim niteleyicisi. Geçerli niteleyiciler ve virtual
şeklindedirstatic
.
get
veya set
erişimcilerinin niteleyiciyi virtual
kabul etmesi gerekmez, ancak niteleyici üzerinde static
anlaşmaları gerekir.
inheritance-modifier
Devralma niteleyicisi. Geçerli niteleyiciler ve sealed
şeklindedirabstract
.
index_list
Bir veya daha fazla dizinin virgülle ayrılmış listesi. Her dizin bir dizin türünden ve özellik yöntemi gövdesinde kullanılabilecek isteğe bağlı bir tanımlayıcıdan oluşur.
value
Bir işlemdeki özelliğe atanacak veya bir set
işlemde get
alınacak değer.
property_body
veya get
erişimcisinin set
özellik yöntemi gövdesi. property_body
, temel alınan özellik veri üyesine erişmek için veya kullanıcı tanımlı işlemede parametre olarak kullanabilirindex_list
.
Windows Çalışma Zamanı
Daha fazla bilgi için bkz . Özellikler (C++/CX).
Gereksinimler
Derleyici seçeneği: /ZW
Ortak Dil Çalışma Zamanı
Sözdizimi
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];
}
Parametreler
modifier
Özellik bildiriminde veya get/set erişimci yönteminde kullanılabilen değiştirici. Olası değerler ve virtual
şeklindedirstatic
.
type
özelliği tarafından temsil edilen değerin türü.
property_name
Yöntemin raise
parametreleri; temsilcinin imzası ile eşleşmelidir.
index_list
Köşeli ayraç içinde belirtilen bir veya daha fazla dizinin virgülle ayrılmış listesi (alt simge işleci, []
). Her dizin için bir tür ve isteğe bağlı olarak özellik yöntemi gövdesinde kullanılabilecek bir tanımlayıcı belirtin.
Açıklamalar
İlk söz dizimi örneği, hem hem de yöntemini örtük olarak bildiren basit bir set
get
özelliği gösterir. Derleyici, özelliğin değerini depolamak için otomatik olarak bir özel alan oluşturur.
İkinci söz dizimi örneği, hem hem de yöntemini açıkça bildiren bir set
get
özellik bloğunu gösterir.
Üçüncü söz dizimi örneğinde müşteri tanımlı dizin özelliği gösterilir. Dizin özelliği, ayarlanacak veya alınacak değere ek olarak parametreler alır. Özellik için bir ad belirtin. Basit bir özelliğin set
aksine, bir dizin özelliğinin ve get
yöntemleri açıkça tanımlanmalıdır ve bu nedenle özellik için bir ad belirtmeniz gerekir.
Dördüncü söz dizimi örneği, türün bir örneğine dizi benzeri erişim sağlayan varsayılan bir özelliği gösterir. anahtar sözcüğü, default
yalnızca varsayılan bir özellik belirtmek için hizmet eder. Varsayılan özelliğin adı, özelliğin tanımlandığı türün adıdır.
Anahtar property
sözcük bir sınıf, arabirim veya değer türünde görünebilir. Bir özelliğin işlevi get
(salt okunur), set
işlevi (salt yazma) veya her ikisi de (okuma-yazma) olabilir.
Özellik adı, onu içeren yönetilen sınıfın adıyla eşleşemez. Getter işlevinin dönüş türü, karşılık gelen bir ayarlayıcı işlevinin son parametresinin türüyle eşleşmelidir.
İstemci koduna, bir özellik sıradan bir veri üyesinin görünümüne sahiptir ve veri üyesiyle aynı söz dizimi kullanılarak öğesine yazılabilir veya buradan okunabilir.
get
ve set
yöntemleri değiştirici üzerinde virtual
anlaşmak gerekmez.
ve set
yönteminin get
erişilebilirliği farklılık gösterebilir.
Bir özellik yönteminin tanımı, sıradan bir yöntem gibi sınıf gövdesinin dışında görünebilir.
Bir get
mülk için ve set
yöntemi değiştirici üzerinde static
kabul edilecektir.
ve set
yöntemleri aşağıdaki açıklamaya get
uyuyorsa bir özellik skaler olur:
yönteminin
get
parametresi yoktur ve dönüş türüneT
sahiptir.set
yöntemi, türündeT
bir parametreye ve dönüş türünevoid
sahiptir.
Bir kapsamda aynı tanımlayıcıya sahip yalnızca bir skaler özellik bildirilmelidir. Skaler özellikler aşırı yüklenemez.
Bir özellik veri üyesi bildirildiğinde, derleyici sınıfına "yedekleme deposu" olarak da adlandırılan bir veri üyesi ekler. Ancak, veri üyesinin adı, kaynaktaki üyeye, içeren sınıfın gerçek bir veri üyesiymiş gibi başvuramazsınız. Türünüzün meta verilerini görüntülemek ve özelliğin yedekleme deposu için derleyici tarafından oluşturulan adı görmek için ildasm.exe kullanın.
Bir özellik bloğundaki erişimci yöntemleri için farklı erişilebilirlik izni verilir. Başka bir ifadeyle set
, yöntemi olabilir public
ve get
yöntemi de olabilir private
. Ancak, bir erişimci yönteminin, özelliğin bildirimindekinden daha az kısıtlayıcı bir erişilebilirliği olması hatadır.
property
bağlama duyarlı bir anahtar sözcüktür. Daha fazla bilgi için bkz . Bağlama duyarlı anahtar sözcükler.
Gereksinimler
Derleyici seçeneği: /clr
Örnekler
Aşağıdaki örnekte, bir özellik veri üyesinin ve özellik bloğunun bildirimi ve kullanımı gösterilmektedir. Ayrıca, bir özellik erişimcisinin sınıf dışında tanımlanabileceğini gösterir.
// 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