Přípony komponent pro .NET a UPWComponent Extensions for .NET and UWP

C++ Standard umožňuje dodavatelům kompilátoru poskytnout nestandardní rozšíření pro jazyk.The C++ standard allows compiler vendors to provide non-standard extensions to the language. Společnost Microsoft poskytuje rozšíření, která vám pomůžou s připojením nativního C++ kódu ke kódu, který běží na .NET Framework nebo v Univerzální platforma Windows (UWP).Microsoft provides extensions to help you connect native C++ code to code that runs on the .NET Framework or the Universal Windows Platform (UWP). Rozšíření .NET se nazývají C++/CLI a vytváří kód, který se spouští v prostředí pro spouštění spravovaném .NET, které se nazývá CLR (Common Language Runtime).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). Rozšíření UWP se nazývají C++/CX a vytváří nativní strojový kód.The UWP extensions are called C++/CX and they produce native machine code.

Poznámka

U nových aplikací doporučujeme místo C++ C++/CX. používat/WinRT.For new applications, we recommend using C++/WinRT rather than C++/CX. C++/WinRT je nová standardní projekce jazyka C++ 17 pro prostředí Windows Runtime rozhraní API.C++/WinRT is a new, standard C++17 language projection for Windows Runtime APIs. Budeme dál podporovat C++/CX a WRL, ale důrazně doporučujeme, aby nové aplikace používaly C++/WinRT.We will continue to support C++/CX and WRL, but highly recommend that new applications use C++/WinRT. Další informace najdete v tématu C++/WinRT.For more information, see C++/WinRT.

Dva moduly runtime, jedna sada rozšířeníTwo runtimes, one set of extensions

C++/CLI rozšiřuje Standard ISO/ANSI C++ a definuje se ve standardu ECMA C++/CLI.C++/CLI extends the ISO/ANSI C++ standard, and is defined under the Ecma C++/CLI Standard. Další informace najdete v tématu programování .NET s C++/CLI (vizuál C++).For more information, see .NET Programming with C++/CLI (Visual C++).

Rozšíření C++/CX jsou podmnožinou C++/CLI.The C++/CX extensions are a subset of C++/CLI. I když je syntaxe rozšíření ve většině případů identická, generovaný kód závisí na tom, zda zadáte /ZW možnost kompilátoru pro cílovou technologii UWP, /clr nebo možnost cílení na rozhraní .NET.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. Tyto přepínače jsou nastaveny automaticky při použití sady Visual Studio k vytvoření projektu.These switches are set automatically when you use Visual Studio to create a project.

Klíčová slova datového typuData Type Keywords

Jazykové rozšíření obsahují agregovaná klíčová slova, která se skládají ze dvou tokenů oddělených prázdným znakem.The language extensions include aggregate keywords, which consist of two tokens separated by white space. Tokeny mohou mít jeden význam, pokud jsou používány samostatně, a další význam při použití společně.The tokens might have one meaning when they are used separately, and another meaning when they are used together. Například slovo "ref" je běžný identifikátor a slovo "Class" je klíčové slovo, které deklaruje nativní třídu.For example, the word "ref" is an ordinary identifier, and the word "class" is a keyword that declares a native class. Pokud jsou však tato slova kombinována s referenční třídouForm, výsledné agregované klíčové slovo deklaruje entitu, která je známá jako běhová třída.But when these words are combined to form ref class, the resulting aggregate keyword declares an entity that is known as a runtime class.

Rozšíření také obsahují Kontextově závislá klíčová slova.The extensions also include context-sensitive keywords. Klíčové slovo je považováno za kontextově závislé v závislosti na druhu příkazu, který obsahuje, a jeho umístění v tomto příkazu.A keyword is treated as context-sensitive depending on the kind of statement that contains it, and its placement in that statement. Například token "Property" může být identifikátor nebo může deklarovat speciální druh člena veřejné třídy.For example, the token "property" can be an identifier, or it can declare a special kind of public class member.

V následující tabulce jsou uvedena klíčová C++ slova v rozšíření jazyka.The following table lists keywords in the C++ language extension.

Klíčové slovoKeyword Závislé na kontextuContext sensitive ÚčelPurpose OdkazReference
ref classref class

struktura refref struct
NeNo Deklaruje třídu.Declares a class. Třídy a strukturyClasses and Structs
Value – třídavalue class

struktura hodnotyvalue struct
NeNo Deklaruje hodnotovou třídu.Declares a value class. Třídy a strukturyClasses and Structs
interface classinterface class

struktura rozhraníinterface struct
NeNo Deklaruje rozhraní.Declares an interface. interface classinterface class
enum classenum class

struktura výčtuenum struct
NeNo Deklaruje výčet.Declares an enumeration. enum classenum class
propertyproperty AnoYes Deklaruje vlastnost.Declares a property. propertyproperty
delegatedelegate AnoYes Deklaruje delegáta.Declares a delegate. delegate (C++/CLI a C++/CX)delegate (C++/CLI and C++/CX)
eventevent AnoYes Deklaruje událost.Declares an event. eventevent

override – specifikátoryOverride Specifiers

Následující klíčová slova můžete použít k zařazování chování přepsání pro odvození.You can use the following keywords to qualify override behavior for derivation. I když klíčové slovo New není rozšířením C++, je zde uvedeno, protože může být použito v dalším kontextu.Although the new keyword is not an extension of C++, it is listed here because it can be used in an additional context. Některé specifikátory jsou platné i pro nativní programování.Some specifiers are also valid for native programming. Další informace najdete v tématu jak: Deklaruje specifikátory přepisu v nativních kompilacíchC++(/CLI).For more information, see How to: Declare Override Specifiers in Native Compilations (C++/CLI).

Klíčové slovoKeyword Závislé na kontextuContext Sensitive ÚčelPurpose OdkazReference
abstractabstract AnoYes Označuje, že funkce nebo třídy jsou abstraktní.Indicates that functions or classes are abstract. abstractabstract
newnew NeNo Označuje, že funkce není popsána ve verzi základní třídy.Indicates that a function is not an override of a base class version. new (nový slot v tabulce vtable)new (new slot in vtable)
overrideoverride AnoYes Označuje, že metoda musí být přepsání verze základní třídy.Indicates that a method must be an override of a base-class version. overrideoverride
sealedsealed AnoYes Zabraňuje použití tříd jako základních tříd.Prevents classes from being used as base classes. sealedsealed

Klíčová slova pro obecné typyKeywords for Generics

Následující klíčová slova byla přidána pro podporu generických typů.The following keywords have been added to support generic types. Další informace najdete v tématu Obecné typy.For more information, see Generics.

Klíčové slovoKeyword Závislé na kontextuContext sensitive ÚčelPurpose
Obecnějigeneric NeNo Deklaruje obecný typ.Declares a generic type.
,where AnoYes Určuje omezení, která se aplikují na parametr obecného typu.Specifies the constraints that are applied to a generic type parameter.

Různá klíčová slovaMiscellaneous Keywords

Do C++ rozšíření byla přidána následující klíčová slova.The following keywords have been added to the C++ extensions.

Klíčové slovoKeyword Závislé na kontextuContext sensitive ÚčelPurpose OdkazReference
finallyfinally AnoYes Označuje chování výchozí zpracování výjimek.Indicates default exception handlings behavior. Zpracování výjimekException Handling
for each, infor each, in NeNo Vytvoří výčet prvků kolekce.Enumerates elements of a collection. for each, infor each, in
gcnewgcnew NeNo Přiděluje typy pro haldu uvolňování paměti.Allocates types on the garbage-collected heap. Místo New a Deletepoužijte.Use instead of new and delete. ref new, gcnewref new, gcnew
ref newref new AnoYes Přidělí prostředí Windows Runtime typ.Allocates a Windows Runtime type. Místo New a Deletepoužijte.Use instead of new and delete. ref new, gcnewref new, gcnew
initonlyinitonly AnoYes Označuje, že člen může být inicializován pouze v deklaraci nebo ve statickém konstruktoru.Indicates that a member can only be initialized at declaration or in a static constructor. initonly (C++/CLI)initonly (C++/CLI)
literalliteral AnoYes Vytvoří proměnnou literálu.Creates a literal variable. literalliteral
nullptrnullptr NeNo Označuje, že popisovač nebo ukazatel neukazuje na objekt.Indicates that a handle or pointer does not point at an object. nullptrnullptr

Konstrukce šablonTemplate Constructs

Následující jazykové konstrukce jsou implementovány jako šablony namísto klíčová slova.The following language constructs are implemented as templates, instead of as keywords. Zadáte /ZW -li možnost kompilátoru, jsou definovány lang v oboru názvů.If you specify the /ZW compiler option, they are defined in the lang namespace. Zadáte /clr -li možnost kompilátoru, jsou definovány cli v oboru názvů.If you specify the /clr compiler option, they are defined in the cli namespace.

Klíčové slovoKeyword ÚčelPurpose OdkazReference
arrayarray Deklaruje pole.Declares an array. PoleArrays
interior_ptrinterior_ptr (Jenom CLR) Odkazuje na data v typu odkazu.(CLR only) Points to data in a reference type. interior_ptr (C++/CLI)interior_ptr (C++/CLI)
pin_ptrpin_ptr (Jenom CLR) Odkazuje na referenční typy CLR pro dočasné potlačení systému uvolňování paměti.(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 Určuje a spustí optimální metodu přetypování pro typ modulu runtime.Determines and executes the optimal casting method for a runtime type. safe_castsafe_cast
typeidtypeid (Jenom CLR) System.Type Načte objekt, který popisuje daný typ nebo objekt.(CLR only) Retrieves a System.Type object that describes the given type or object. typeidtypeid

DeklarátoryDeclarators

Následující typ deklarátory instruuje modul runtime, aby automaticky spravoval dobu života a odstraňování přidělených objektů.The following type declarators instruct the runtime to automatically manage the lifetime and deletion of allocated objects.

OperátorOperator ÚčelPurpose OdkazReference
^ Deklaruje popisovač objektu; To znamená, že ukazatel na objekt prostředí Windows Runtime nebo CLR, který je automaticky odstraněn, když již není použitelný.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. Operátor popisovače objektu (^)Handle to Object Operator (^)
% Deklaruje sledovací odkaz; To znamená odkaz na objekt prostředí Windows Runtime nebo CLR, který je automaticky odstraněn, když již není použitelný.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. Operátor sledovacího odkazuTracking Reference Operator

Tato část obsahuje seznam dalších programovacích konstrukcí a témata, která se týkají CLR.This section lists additional programming constructs, and topics that pertain to the CLR.

TémaTopic PopisDescription
__identifier (C++/CLI)__identifier (C++/CLI) (Prostředí Windows Runtime a CLR) Povoluje použití klíčových slov jako identifikátorů.(Windows Runtime and CLR) Enables the use of keywords as identifiers.
Seznamy argumentů s proměnnou délkou (...) (C++/CLI)Variable Argument Lists (...) (C++/CLI) (Prostředí Windows Runtime a CLR) Umožňuje, aby funkce převzala proměnlivý počet argumentů.(Windows Runtime and CLR) Enables a function to take a variable number of arguments.
.NET Framework – ekvivalenty nativních typů C++ (C++/CLI).NET Framework Equivalents to C++ Native Types (C++/CLI) Obsahuje seznam typů CLR, které se používají místo C++ celočíselných typů.Lists the CLR types that are used in place of C++ integral types.
doména AppDomain __declspec – modifikátorappdomain __declspec modifier Modifikátor __declspec , který vyžaduje, aby existovaly statické a globální proměnné pro doménovou působnost.__declspec modifier that mandates that static and global variables exist per appdomain.
Přetypování ve stylu jazyka C s možnostíC++/CLR (/CLI)C-Style Casts with /clr (C++/CLI) Popisuje způsob interpretace přetypování ve stylu jazyka C.Describes how C-style casts are interpreted.
konvence volání __clrcall__clrcall calling convention Označuje konvenci volání kompatibilní s modulem CLR.Indicates the CLR-compliant calling convention.
__cplusplus_cli Předdefinovaná makraPredefined Macros
Vlastní atributyCustom Attributes Popisuje, jak definovat vlastní atributy CLR.Describes how to define your own CLR attributes.
Zpracování výjimekException Handling Poskytuje přehled o zpracování výjimek.Provides an overview of exception handling.
Explicitní přepsáníExplicit Overrides Ukazuje, jak členské funkce mohou přepsat libovolné členy.Demonstrates how member functions can override arbitrary members.
Přátelská sestavení (C++)Friend Assemblies (C++) Popisuje, jak může klientské sestavení přistupovat ke všem typům v součásti sestavení.Discusses how a client assembly can access all types in an assembly component.
ZabaleníBoxing Ukazuje podmínky, které jsou typy hodnot v krabici.Demonstrates the conditions in which values types are boxed.
Podpora kompilátoru pro typové vlastnostiCompiler Support for Type Traits Popisuje, jak detekovat charakteristiky typů v době kompilace.Discusses how to detect characteristics of types at compile time.
spravované, nespravované direktivy pragmamanaged, unmanaged pragmas Ukazuje, jak mohou spravované a nespravované funkce existovat společně ve stejném modulu.Demonstrates how managed and unmanaged functions can co-exist in the same module.
zpracování __declspec – modifikátorprocess __declspec modifier Modifikátor __declspec , který stanoví, že statické a globální proměnné existují pro proces.__declspec modifier that mandates that static and global variables exist per process.
Reflexe (C++/CLI)Reflection (C++/CLI) Ukazuje verzi CLR informací o typu modulu runtime.Demonstrates the CLR version of run-time type information.
ŘetězecString Popisuje převod kompilátoru pro řetězcové literály Stringna.Discusses compiler conversion of string literals to String.
Předávání typů (C++/CLI)Type Forwarding (C++/CLI) Povoluje přesun typu v lodním sestavení do jiného sestavení tak, aby kód klienta nebylo nutné znovu kompilovat.Enables the movement of a type in a shipping assembly to another assembly so that client code does not have to be recompiled.
Uživatelsky definované atributyUser-Defined Attributes Ukazuje uživatelsky definované atributy.Demonstrates user-defined attributes.
#using direktiva#using Directive Importuje externí sestavení.Imports external assemblies.
Dokumentace XMLXML Documentation Vysvětluje dokumentaci kódu založenou na jazyce XML pomocí /doc (zpracování dokumentačních komentářů) (C++C/)Explains XML-based code documentation by using /doc (Process Documentation Comments) (C/C++)

Viz také:See also

Programování pro .NET v jazyce C++/CLI (Visual C++).NET Programming with C++/CLI (Visual C++)
Nativní funkce a vzájemná funkční spolupráce rozhraní .NETNative and .NET Interoperability