.NET ve UWP için Bileşen Uzantıları
C++ standardı, derleyici satıcılarının dile standart olmayan uzantılar sağlamasına olanak tanır. Microsoft, yerel C++ kodunu .NET Framework veya Evrensel Windows Platformu (UWP) üzerinde çalışan koda bağlamanıza yardımcı olacak uzantılar sağlar. .NET uzantıları C++/CLI olarak adlandırılır ve Ortak Dil Çalışma Zamanı (CLR) olarak adlandırılan .NET yönetilen yürütme ortamında yürütülen kod oluşturur. UWP uzantıları C++/CX olarak adlandırılır ve yerel makine kodu üretir.
Not
Yeni uygulamalar için C++/CX yerine C++/WinRT kullanmanızı öneririz. C++/WinRT, Windows Çalışma Zamanı API'leri için yeni, standart bir C++17 dil projeksiyonudur. C++/CX ve WRL'yi desteklemeye devam edeceğiz, ancak yeni uygulamaların C++/WinRT kullanmasını kesinlikle öneririz. Daha fazla bilgi için bkz . C++/WinRT.
İki çalışma zamanı, bir uzantı kümesi
C++/CLI, ISO/ANSI C++ standardını genişletir ve Ecma C++/CLI Standardı altında tanımlanır. Daha fazla bilgi için bkz . C++/CLI ile .NET Programlama (Visual C++).
C++/CX uzantıları, C++/CLI'nın bir alt kümesidir. Uzantı söz dizimi çoğu durumda aynı olsa da, oluşturulan kod UWP'yi hedeflemek için derleyici seçeneğini mi /clr
yoksa .NET'i hedefleme seçeneğini mi belirttiğinize /ZW
bağlıdır. Proje oluşturmak için Visual Studio kullandığınızda bu anahtarlar otomatik olarak ayarlanır.
Veri Türü Anahtar Sözcükleri
Dil uzantıları, boşlukla ayrılmış iki belirteç içeren toplama anahtar sözcüklerini içerir. Belirteçlerin ayrı olarak kullanıldığında bir anlamı, birlikte kullanıldığında başka bir anlamı olabilir. Örneğin, "başv" sözcüğü sıradan bir tanımlayıcıdır ve "sınıf" sözcüğü yerel bir sınıf bildiren bir anahtar sözcüktür. Ancak bu sözcükler ref sınıfı oluşturmak için birleştirildiğinde, sonuçta elde edilen toplama anahtar sözcüğü çalışma zamanı sınıfı olarak bilinen bir varlık bildirir.
Uzantılar bağlama duyarlı anahtar sözcükler de içerir. Anahtar sözcük, onu içeren deyimin türüne ve bu deyimdeki yerleşimine bağlı olarak bağlama duyarlı olarak değerlendirilir. Örneğin, "özellik" belirteci bir tanımlayıcı olabilir veya özel bir ortak sınıf üyesi türü bildirebilir.
Aşağıdaki tabloda C++ dil uzantısında anahtar sözcükler listelemektedir.
Anahtar sözcük | Bağlama duyarlı | Purpose | Başvuru |
---|---|---|---|
ref sınıfı başvuru yapısı |
Hayır | Bir sınıf bildirir. | Sınıflar ve Yapılar |
value sınıfı değer yapısı |
Hayır | Bir değer sınıfı bildirir. | Sınıflar ve Yapılar |
arabirim sınıfı arabirim yapısı |
Hayır | Bir arabirim bildirir. | arabirim sınıfı |
sabit listesi sınıfı enum yapısı |
Hayır | Bir numaralandırma bildirir. | sabit listesi sınıfı |
property |
Yes | Bir özellik bildirir. | property |
delegate | Yes | Bir temsilci bildirir. | delegate (C++/CLI ve C++/CX) |
event | Yes | Bir olayı bildirir. | event |
Geçersiz Kılma Tanımlayıcıları
Türetme için geçersiz kılma davranışını niteleme amacıyla aşağıdaki anahtar sözcükleri kullanabilirsiniz. new
Anahtar sözcüğü C++ uzantısı olmasa da, ek bir bağlamda kullanılabildiğinden burada listelenmiştir. Bazı tanımlayıcılar yerel programlama için de geçerlidir. Daha fazla bilgi için bkz . Nasıl yapılır: Yerel Derlemelerde Geçersiz Kılma Tanımlayıcılarını Bildirme (C++/CLI).
Anahtar sözcük | Bağlama Duyarlı | Purpose | Başvuru |
---|---|---|---|
abstract | Yes | İşlevlerin veya sınıfların soyut olduğunu gösterir. | abstract |
new |
Hayır | bir işlevin temel sınıf sürümünü geçersiz kılmadığını gösterir. | yeni (vtable'de yeni yuva) |
override | Yes | Bir yöntemin temel sınıf sürümünün geçersiz kılınması gerektiğini gösterir. | override |
sealed | Yes | Sınıfların temel sınıf olarak kullanılmasını engeller. | sealed |
Genel Anahtar Sözcükler
Genel türleri desteklemek için aşağıdaki anahtar sözcükler eklenmiştir. Daha fazla bilgi için bkz . Genel Bilgiler.
Anahtar sözcük | Bağlama duyarlı | Purpose |
---|---|---|
jenerik | Hayır | Genel bir tür bildirir. |
nerede | Yes | Genel tür parametresine uygulanan kısıtlamaları belirtir. |
Çeşitli Anahtar Sözcükler
C++ uzantılarına aşağıdaki anahtar sözcükler eklenmiştir.
Anahtar sözcük | Bağlama duyarlı | Purpose | Başvuru |
---|---|---|---|
finally | Yes | Varsayılan özel durum işleme davranışını gösterir. | Özel Durum İşleme |
for each, in | Hayır | Bir koleksiyonun öğelerini numaralandırır. | for each, in |
gcnew | Hayır | Atık toplanan yığında türleri ayırır. ve delete yerine new kullanın. |
yeni başvuru, gcnew |
başv yeni | Yes | bir Windows Çalışma Zamanı türü ayırır. ve delete yerine new kullanın. |
yeni başvuru, gcnew |
initonly | Yes | Bir üyenin yalnızca bildirimde veya statik bir oluşturucuda başlatılabildiğini gösterir. | initonly (C++/CLI) |
değişmez değer | Yes | Değişmez değer değişkeni oluşturur. | değişmez değer |
nullptr |
Hayır | Tanıtıcının veya işaretçinin bir nesneyi işaret etmediğini gösterir. | nullptr |
Şablon Yapıları
Aşağıdaki dil yapıları anahtar sözcükler yerine şablon olarak uygulanır. Derleyici seçeneğini belirtirseniz /ZW
, bunlar ad alanında lang
tanımlanır. Derleyici seçeneğini belirtirseniz /clr
, bunlar ad alanında cli
tanımlanır.
Anahtar sözcük | Purpose | Başvuru |
---|---|---|
dizi | Bir dizi bildirir. | Diziler |
interior_ptr | (yalnızca CLR) Başvuru türündeki verileri gösterir. | interior_ptr (C++/CLI) |
pin_ptr | (yalnızca CLR) Çöp toplama sistemini geçici olarak engellemek için CLR başvuru türlerini gösterir. | pin_ptr (C++/CLI) |
safe_cast | Çalışma zamanı türü için en uygun atama yöntemini belirler ve yürütür. | safe_cast |
typeid |
(yalnızca CLR) Verilen türü veya nesneyi tanımlayan bir System.Type nesne alır. | typeid |
Bildirimciler
Aşağıdaki tür bildirimcileri çalışma zamanına ayrılan nesnelerin yaşam süresini ve silinmesini otomatik olarak yönetmesini bildirir.
Operatör | Purpose | Başvuru |
---|---|---|
^ |
Bir nesneye tanıtıcı bildirir; başka bir ifadeyle, artık kullanılamadığında otomatik olarak silinen bir Windows Çalışma Zamanı veya CLR nesnesi işaretçisi. | İşlenecek Nesne İşleci (^) |
% |
bir izleme başvurusu bildirir; başka bir ifadeyle, artık kullanılamadığında otomatik olarak silinen bir Windows Çalışma Zamanı veya CLR nesnesine başvurudur. | İzleme Başvurusu İşleci |
Ek Yapılar ve İlgili Konular
Bu bölümde, CLR ile ilgili ek programlama yapıları ve konular listelenir.
Konu | Açıklama |
---|---|
__tanımlayıcı (C++/CLI) | (Windows Çalışma Zamanı ve CLR) Anahtar sözcüklerin tanımlayıcı olarak kullanılmasını sağlar. |
Değişken Bağımsız Değişken Listeleri (...) (C++/CLI) | (Windows Çalışma Zamanı ve CLR) İşlevin değişken sayıda bağımsız değişken almasını sağlar. |
C++ Yerel Türlerinin .NET Framework Eşdeğerleri (C++/CLI) | C++ tam sayı türleri yerine kullanılan CLR türlerini listeler. |
appdomain __declspec değiştiricisi |
__declspec her uygulama etki alanı için statik ve genel değişkenlerin mevcut olduğunu zorunlu alan değiştirici. |
/clr ile C Stili Atamalar (C++/CLI) | C stili atamaların nasıl yorumlandığı açıklanır. |
__clrcall çağırma kuralı | CLR uyumlu çağırma kuralını gösterir. |
__cplusplus_cli |
Önceden Tanımlanmış Makrolar |
Özel Öznitelikler | Kendi CLR özniteliklerinizi tanımlamayı açıklar. |
Özel Durum İşleme | Özel durum işlemeye genel bir bakış sağlar. |
Açık Geçersiz Kılmalar | Üye işlevlerinin rastgele üyeleri nasıl geçersiz kılabileceğini gösterir. |
Arkadaş Derlemeler (C++) | bir istemci derlemenin bir derleme bileşenindeki tüm türlere nasıl erişebileceğini açıklar. |
Kutulama | Değer türlerinin kutulandığı koşulları gösterir. |
Tür Özellikleri için Derleyici Desteği | Derleme zamanında türlerin özelliklerini algılamayı açıklar. |
yönetilen, yönetilmeyen pragmalar | Yönetilen ve yönetilmeyen işlevlerin aynı modülde nasıl birlikte bulunabileceğini gösterir. |
işlem __declspec değiştirici |
__declspec her işlem için statik ve genel değişkenlerin mevcut olması zorunlu kılınan değiştirici. |
Yansıma (C++/CLI) | Çalışma zamanı türü bilgilerinin CLR sürümünü gösterir. |
Dize | Dize değişmez değerlerinin derleyiciye dönüştürülmesi Stringaçıklanır. |
Tür İletme (C++/CLI) | İstemci kodunun yeniden derlenmemesi için sevkiyat derlemesindeki bir türün başka bir derlemeye taşınmasına olanak tanır. |
Kullanıcı Tanımlı Öznitelikler | Kullanıcı tanımlı öznitelikleri gösterir. |
#using Yönergesi | Dış derlemeleri içeri aktarır. |
XML Belgeleri | /doc kullanarak XML tabanlı kod belgelerini açıklar (İşlem Belgeleri Açıklamaları) (C/C++) |
Ayrıca bkz.
C++/CLI (Visual C++) ile .NET Programlama
Yerel ve.NET Birlikte Çalışabilirliği