.NET ve UWP için Bileşen UzantılarıComponent Extensions for .NET and UWP

C++ standardı, derleyici satıcılarının dile standart olmayan uzantılar sağlamasına izin verir.The C++ standard allows compiler vendors to provide non-standard extensions to the language. 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.Microsoft provides extensions to help you connect native C++ code to code that runs on the .NET Framework or the Universal Windows Platform (UWP). .NET uzantılarına C++/CLı adı verilir ve .NET yönetilen yürütme ortamında çalıştırılan ve ortak dil çalışma zamanı (CLR) olarak adlandırılan kodu üretir.The .NET extensions are called C++/CLI and produce code that executes in the .NET managed execution environment that is called the Common Language Runtime (CLR). UWP uzantılarına C++/CX adı verilir ve yerel makine kodu üretir.The UWP extensions are called C++/CX and they produce native machine code.

Not

Yeni uygulamalar için C++/cxyerine C++/Wınrt kullanılması önerilir.For new applications, we recommend using C++/WinRT rather than C++/CX. C++/Wınrt, Windows Çalışma Zamanı API 'Leri için yeni, standart bir C++ 17 dil projeksiyonu.C++/WinRT is a new, standard C++17 language projection for Windows Runtime APIs. C++/CX ve WRL 'yi desteklemeye devam edeceğiz, ancak yeni uygulamaların C++/Wınrtrtı kullanmasını önemle öneririz.We will continue to support C++/CX and WRL, but highly recommend that new applications use C++/WinRT. Daha fazla bilgi için bkz. C++/Wınrt.For more information, see C++/WinRT.

İki çalışma zamanı, bir dizi uzantıTwo runtimes, one set of extensions

C++/CLı, ISO/ANSI C++ standardını genişletir ve ecma C++/CLı standardına göre tanımlanır.C++/CLI extends the ISO/ANSI C++ standard, and is defined under the Ecma C++/CLI Standard. Daha fazla bilgi için bkz. C++/CLI ile .NET programlama (Visual C++).For more information, see .NET Programming with C++/CLI (Visual C++).

C++/CX uzantıları, C++/CLI'NIN bir alt kümesidir.The C++/CX extensions are a subset of C++/CLI. Uzantı söz dizimi çoğu durumda özdeş olsa da, oluşturulan kod, /ZW UWP 'yi hedeflemek için derleyici seçeneğini belirtmenize veya /clr .net 'i hedeflemek için kullanabileceğiniz bir seçeneğe bağlıdır.Although the extension syntax is identical in most cases, the code that is generated depends on whether you specify the /ZW compiler option to target UWP, or the /clr option to target .NET. Bu anahtarlar, bir proje oluşturmak için Visual Studio kullandığınızda otomatik olarak ayarlanır.These switches are set automatically when you use Visual Studio to create a project.

Veri türü anahtar sözcükleriData Type Keywords

Dil uzantıları, boşluk ile ayrılmış iki belirteçden oluşan toplama anahtar sözcüklerini içerir.The language extensions include aggregate keywords, which consist of two tokens separated by white space. Belirteçlerin ayrı olarak kullanıldıkları bir anlamı olabilir ve birlikte kullanıldıkları bir anlamı vardır.The tokens might have one meaning when they are used separately, and another meaning when they are used together. Örneğin, "ref" sözcüğü sıradan bir tanımlayıcıdır ve "Class" sözcüğü, yerel bir sınıfı bildiren bir anahtar sözcüktür.For example, the word "ref" is an ordinary identifier, and the word "class" is a keyword that declares a native class. Ancak, bu sözcükler form başvuru sınıfında birleştirildiğinde, elde edilen toplama anahtar sözcüğü, çalışma zamanı sınıfı olarak bilinen bir varlık bildirir.But when these words are combined to form ref class, the resulting aggregate keyword declares an entity that is known as a runtime class.

Uzantılar ayrıca bağlama duyarlı anahtar sözcükler içerir.The extensions also include context-sensitive keywords. Anahtar sözcüğü, kendisini içeren deyimin türüne ve bu deyimdeki yerleşimine göre bağlama duyarlı olarak değerlendirilir.A keyword is treated as context-sensitive depending on the kind of statement that contains it, and its placement in that statement. Örneğin, belirteç "özelliği" bir tanımlayıcı olabilir veya özel bir ortak sınıf üyesi türü bildirebilir.For example, the token "property" can be an identifier, or it can declare a special kind of public class member.

Aşağıdaki tabloda, C++ dil uzantısında anahtar sözcükler listelenmektedir.The following table lists keywords in the C++ language extension.

SözcükleKeyword Bağlama duyarlıContext sensitive AmaçPurpose BaşvuruReference
başvuru sınıfıref class

ref yapısıref struct
HayırNo Bir sınıf bildirir.Declares a class. Sınıflar ve YapılarClasses and Structs
değer sınıfıvalue class

value yapısıvalue struct
HayırNo Değer sınıfını bildirir.Declares a value class. Sınıflar ve YapılarClasses and Structs
arabirim sınıfıinterface class

arabirim yapısıinterface struct
HayırNo Bir arabirim bildirir.Declares an interface. arabirim sınıfıinterface class
sabit listesi sınıfıenum class

Enum yapısıenum struct
HayırNo Bir sabit listesi bildirir.Declares an enumeration. sabit listesi sınıfıenum class
property EvetYes Bir özellik bildirir.Declares a property. özelliðiproperty
ğinidelegate EvetYes Bir temsilci bildirir.Declares a delegate. delegate (C++/CLI ve C++/CX)delegate (C++/CLI and C++/CX)
olayevent EvetYes Bir olayı bildirir.Declares an event. olayevent

Geçersiz Kılma TanımlayıcılarıOverride Specifiers

Türetme için geçersiz kılma davranışını nitelemek için aşağıdaki anahtar sözcükleri kullanabilirsiniz.You can use the following keywords to qualify override behavior for derivation. new Anahtar sözcüğü C++ uzantısı olmasa da, ek bir bağlamda kullanılabilmesi için burada listelenir.Although the new keyword is not an extension of C++, it is listed here because it can be used in an additional context. Bazı tanımlayıcılar yerel programlama için de geçerlidir.Some specifiers are also valid for native programming. 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).For more information, see How to: Declare Override Specifiers in Native Compilations (C++/CLI).

SözcükleKeyword Bağlama duyarlıContext Sensitive AmaçPurpose BaşvuruReference
Soyutabstract EvetYes İşlevlerin veya sınıfların soyut olduğunu gösterir.Indicates that functions or classes are abstract. Soyutabstract
new HayırNo Bir işlevin temel sınıf sürümünün geçersiz kılınmadığını gösterir.Indicates that a function is not an override of a base class version. yeni (vtable'de yeni yuva)new (new slot in vtable)
overrideoverride EvetYes Bir yöntemin temel sınıf sürümünün geçersiz kılınması olması gerektiğini belirtir.Indicates that a method must be an override of a base-class version. overrideoverride
sealedsealed EvetYes Sınıfların temel sınıf olarak kullanılmasını önler.Prevents classes from being used as base classes. sealedsealed

Genel türler için anahtar sözcüklerKeywords for Generics

Aşağıdaki anahtar sözcükler genel türleri desteklemek için eklenmiştir.The following keywords have been added to support generic types. Daha fazla bilgi için bkz. Genel türler.For more information, see Generics.

SözcükleKeyword Bağlama duyarlıContext sensitive AmaçPurpose
yorlargeneric HayırNo Genel bir tür bildirir.Declares a generic type.
olmadığıwhere EvetYes Genel tür parametresine uygulanan kısıtlamaları belirtir.Specifies the constraints that are applied to a generic type parameter.

Çeşitli anahtar sözcüklerMiscellaneous Keywords

Aşağıdaki anahtar sözcükler C++ uzantılarına eklenmiştir.The following keywords have been added to the C++ extensions.

SözcükleKeyword Bağlama duyarlıContext sensitive AmaçPurpose BaşvuruReference
finallyfinally EvetYes Varsayılan özel durum handller davranışını gösterir.Indicates default exception handlings behavior. Özel Durum İşlemeException Handling
for each, infor each, in HayırNo Bir koleksiyonun öğelerini numaralandırır.Enumerates elements of a collection. for each, infor each, in
gcnewgcnew HayırNo Atık toplanan yığında türleri ayırır.Allocates types on the garbage-collected heap. Ve yerine kullanın new delete .Use instead of new and delete. yeni başvuru, gcnewref new, gcnew
Yeni başvururef new EvetYes Windows Çalışma Zamanı türünü ayırır.Allocates a Windows Runtime type. Ve yerine kullanın new delete .Use instead of new and delete. yeni başvuru, gcnewref new, gcnew
initonlyinitonly EvetYes Üyenin yalnızca bildirimde veya statik oluşturucuda başlatılabileceğini belirtir.Indicates that a member can only be initialized at declaration or in a static constructor. initonly (C++/CLI)initonly (C++/CLI)
ayarınıliteral EvetYes Değişmez değer değişkeni oluşturur.Creates a literal variable. ayarınıliteral
nullptr HayırNo Bir tanıtıcı veya işaretçinin bir nesneyi işaret içermediğini belirtir.Indicates that a handle or pointer does not point at an object. nullptrnullptr

Şablon yapılarıTemplate Constructs

Aşağıdaki dil yapıları, anahtar sözcükler yerine şablon olarak uygulanır.The following language constructs are implemented as templates, instead of as keywords. /ZWDerleyici seçeneğini belirtirseniz, bunlar lang ad alanında tanımlanır.If you specify the /ZW compiler option, they are defined in the lang namespace. /clrDerleyici seçeneğini belirtirseniz, bunlar cli ad alanında tanımlanır.If you specify the /clr compiler option, they are defined in the cli namespace.

SözcükleKeyword AmaçPurpose BaşvuruReference
arrayarray Bir dizi bildirir.Declares an array. DizilerArrays
interior_ptrinterior_ptr (Yalnızca CLR) Başvuru türündeki verileri gösterir.(CLR only) Points to data in a reference type. interior_ptr (C++/CLI)interior_ptr (C++/CLI)
pin_ptrpin_ptr (Yalnızca CLR) Çöp toplama sisteminin geçici olarak görüntülenmesini sağlamak için CLR başvuru türlerini işaret eder.(CLR only) Points to CLR reference types to temporarily suppress the garbage-collection system. pin_ptr (C++/CLI)pin_ptr (C++/CLI)
safe_castsafe_cast Çalışma zamanı türü için en iyi atama yöntemini belirler ve yürütür.Determines and executes the optimal casting method for a runtime type. safe_castsafe_cast
typeid (Yalnızca CLR) System.Type Verilen türü veya nesneyi açıklayan bir nesne alır.(CLR only) Retrieves a System.Type object that describes the given type or object. typeidtypeid

BildirimcilerDeclarators

Aşağıdaki tür Bildirimciler, çalışma zamanına ayrılan nesnelerin ömrünü ve silinmesini otomatik olarak yönetmesini ister.The following type declarators instruct the runtime to automatically manage the lifetime and deletion of allocated objects.

İşleçOperator AmaçPurpose BaşvuruReference
^ Bir nesneye yönelik bir tanıtıcı bildirir; diğer bir deyişle, artık kullanılabilir olmadığında otomatik olarak silinen Windows Çalışma Zamanı veya CLR nesnesine yönelik bir işaretçidir.Declares a handle to an object; that is, a pointer to a Windows Runtime or CLR object that is automatically deleted when it is no longer usable. Object Işlecine işle (^)Handle to Object Operator (^)
% Bir izleme başvurusu bildirir; diğer bir deyişle, artık kullanılabilir olmadığında otomatik olarak silinen Windows Çalışma Zamanı veya CLR nesnesine bir başvurudur.Declares a tracking reference; that is, a reference to a Windows Runtime or CLR object that is automatically deleted when it is no longer usable. İzleme başvurusu IşleciTracking Reference Operator

Bu bölümde, ek programlama yapıları ve CLR ile ilgili konular listelenmektedir.This section lists additional programming constructs, and topics that pertain to the CLR.

KonuTopic AçıklamaDescription
__tanımlayıcı (C++/CLI)__identifier (C++/CLI) (Windows Çalışma Zamanı ve CLR) Anahtar sözcüklerin tanımlayıcı olarak kullanılmasına izin vermez.(Windows Runtime and CLR) Enables the use of keywords as identifiers.
Değişken Bağımsız Değişken Listeleri (...) (C++/CLI)Variable Argument Lists (...) (C++/CLI) (Windows Çalışma Zamanı ve CLR) Bir işlevin değişken sayıda bağımsız değişken almasını sağlar.(Windows Runtime and CLR) Enables a function to take a variable number of arguments.
C++ Yerel Türlerinin .NET Framework Eşdeğerleri (C++/CLI).NET Framework Equivalents to C++ Native Types (C++/CLI) C++ integral türlerinin yerine kullanılan CLR türlerini listeler.Lists the CLR types that are used in place of C++ integral types.
AppDomain __declspec icisiappdomain __declspec modifier __declspec statik ve genel değişkenlerin AppDomain başına mevcut olduğunu belirten değiştirici.__declspec modifier that mandates that static and global variables exist per appdomain.
/Clr ile C stili atamalar (C++/CLı)C-Style Casts with /clr (C++/CLI) C stili, nasıl yorumlandığını açıklar.Describes how C-style casts are interpreted.
çağırma kuralı __clrcall__clrcall calling convention CLR uyumlu çağırma kuralını gösterir.Indicates the CLR-compliant calling convention.
__cplusplus_cli Önceden Tanımlı MakrolarPredefined Macros
Özel özniteliklerCustom Attributes Kendi CLR öznitelerinizi nasıl tanımlayacağınızı açıklar.Describes how to define your own CLR attributes.
Özel Durum İşlemeException Handling Özel durum işlemeye genel bir bakış sağlar.Provides an overview of exception handling.
Açık geçersiz kılmalarExplicit Overrides Üye işlevlerin rastgele üyeleri nasıl geçersiz kılabileceğinizi gösterir.Demonstrates how member functions can override arbitrary members.
Arkadaş derlemeler (C++)Friend Assemblies (C++) Bir istemci derlemesinin bir derleme bileşenindeki tüm türlere nasıl erişebileceğinizi açıklar.Discusses how a client assembly can access all types in an assembly component.
KutulamaBoxing Değer türlerinin kutulanmış olduğu koşulları gösterir.Demonstrates the conditions in which values types are boxed.
Tür nitelikleri için derleyici desteğiCompiler Support for Type Traits Derleme zamanında türlerin özelliklerinin nasıl algılanacağını açıklar.Discusses how to detect characteristics of types at compile time.
yönetilen, yönetilmeyen pragmalarmanaged, unmanaged pragmas Yönetilen ve yönetilmeyen işlevlerin aynı modülde nasıl ortak bulunabildiğini gösterir.Demonstrates how managed and unmanaged functions can co-exist in the same module.
işlem __declspec icisiprocess __declspec modifier __declspec statik ve genel değişkenlerin işlem başına mevcut olduğunu belirten değiştirici.__declspec modifier that mandates that static and global variables exist per process.
Yansıma (C++/CLI)Reflection (C++/CLI) Çalışma zamanı tür bilgilerinin CLR sürümünü gösterir.Demonstrates the CLR version of run-time type information.
DizeString Dize sabit değerlerinin derleyicinin dönüştürülmesini açıklar String .Discusses compiler conversion of string literals to String.
Tür İletme (C++/CLI)Type Forwarding (C++/CLI) İstemci kodunun yeniden derlenmesi zorunda olmaması için, bir sevkiyat derlemesinde bir türün başka bir derlemeye taşınmasını sağlar.Enables the movement of a type in a shipping assembly to another assembly so that client code does not have to be recompiled.
Kullanıcı tanımlı özniteliklerUser-Defined Attributes Kullanıcı tanımlı öznitelikleri gösterir.Demonstrates user-defined attributes.
#using yönergesi#using Directive Dış derlemeleri içeri aktarır.Imports external assemblies.
XML BelgeleriXML Documentation /Doc (Işlem belgeleri açıklamaları) kullanılarak XML tabanlı kod belgelerini açıklar (C/C++)Explains XML-based code documentation by using /doc (Process Documentation Comments) (C/C++)

Ayrıca bkz.See also

C++/CLI (Visual C++) ile .NET Programlama.NET Programming with C++/CLI (Visual C++)
Yerel ve .NET birlikte çalışabilirliğiNative and .NET Interoperability