.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 deleteyerine new kullanın. yeni başvuru, gcnew
başv yeni Yes bir Windows Çalışma Zamanı türü ayırır. ve deleteyerine 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

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