Prüfliste der Syntaxaktualisierung für Managed Extensions for C++

Aktualisiert: November 2007

Visual C++ enthält Funktionen für Visual C++ 2005 im Hinblick auf virtuelle Computer mit Garbage Collection, wie .NET Framework. Für Visual C++ 2008 ist die Unterstützung für Managed Extensions for C++ veraltet und wird in einer zukünftigen Version möglicherweise ganz entfernt.

Code mit Managed Extensions for C++ kann weiterhin mit /clr:oldSyntax kompiliert werden. Siehe /clr (Common Language Runtime-Kompilierung). Weitere Informationen zum Verwenden der neuen Syntax finden Sie unter:

In diesem Thema werden die Unterschiede zwischen Managed Extensions for C++ und der neuen Visual C++-Syntax aufgelistet.

So aktualisieren Sie Managed Extensions for C++-Code

  • Entfernen Sie #using <mscorlib.dll>. (Auf diese Assembly wird jetzt standardmäßig verwiesen.)

  • Ersetzen Sie __gc class durch ref class.

  • Ersetzen Sie __gc struct durch ref struct.

  • Ersetzen Sie __value class durch value class.

  • Ersetzen Sie __value struct durch value struct.

  • Entfernen Sie Standardkonstruktoren aus den Wertklassen. (Standardkonstruktoren für Werttypen sind in Managed Extensions for C++ zulässig, jedoch können sie mit CLR nicht zuverlässig aufgerufen werden, sodass diese Funktion entfernt wurde.)

Weitere Informationen zu Verweis- und Werttypen finden Sie unter Classes and Structs (Managed).

  • Ersetzen Sie __gc __interface durch interface class.

Weitere Informationen zum Schnittstellen-Schlüsselwort finden Sie unter interface class.

  • Ersetzen Sie __abstract durch abstract, und verschieben Sie es hinter den Klassennamen. Weitere Informationen finden Sie unter abstract (Visual C++).

  • Ersetzen Sie __sealed durch sealed, und verschieben Sie es hinter den Klassennamen. Weitere Informationen finden Sie unter sealed.

  • Ersetzen Sie __property durch property, kombinieren Sie die get- und die set-Methode in einem einzelnen Eigenschaftenblock, und entfernen Sie den abschließenden Unterstrich bzw. das Namenssuffix dieser Accessoren. Bei einfachen Eigenschaften müssen die Accessoren nicht explizit definiert sein. Die Syntax für indizierte Eigenschaften erfordert Klammerpaare nach dem Eigenschaftentyp. Weitere Informationen finden Sie unter How to: Use Simple Properties und How to: Use Indexed Properties.

  • Ersetzen Sie __event durch event (Visual C++).

  • Ersetzen Sie __value enum durch enum class.

  • Ersetzen Sie Zeiger auf verwendete Referenztypen (mit __gc* definiert) durch ^. Weitere Informationen finden Sie unter ^ (Handle to Object on Managed Heap).

  • Ersetzen Sie Zeiger auf Werttypen, die sich potenziell im Heap der Garbage Collection befinden, durch interior_ptr.

  • Ersetzen Sie mit __pin deklarierte Zeiger durch Instanzen von pin_ptr, wenn kein ganzes Objekt fixiert wird. Verwenden Sie in diesem Fall interior_ptr und dann pin_ptr für den inneren Zeiger. Für Visual C++ 2005 wird diese Vorlage im cli Namespace definiert.

  • Ersetzen Sie new durch gcnew.

  • Ersetzen Sie 0 oder NULL durch nullptr, wenn damit angezeigt wird, dass ein Zeiger oder Handle für den Heap der Garbage Collection kein Objekt angibt, und wenn Vergleiche zum Überprüfen von Zeigern und Handles verwendet werden.

  • Aktualisieren Sie mit __gc[] deklarierte Garbage Collection-Arrays, um den array (Visual C++)-Typ zu verwenden. Für Visual C++ 2005 wird diese Vorlage im cli Namespace definiert.

  • Entfernen Sie alle Instanzen von __box. Weitere Informationen finden Sie unter Implicit Boxing.

  • Entfernen Sie das "S"-Präfix aus den Zeichenfolgenliteralen (der Compiler bestimmt nun auf Grundlage des Verwendungskontexts, ob eine Zeichenfolge literal ist.)

  • Ersetzen Sie die explizite Deklaration und Verwendung überladener Operatoren, die in Managed Extensions for C++ erforderlich ist (wie op_Addition, op_Subtraction) durch die herkömmliche C++-Syntax. Weitere Informationen finden Sie unter User-Defined Operators und Operator Overloading.

  • Aktualisieren Sie Konvertierungsoperatoren (die in der Managed Extensions for C++-Syntax op_Implicit und op_Explicit verwenden.) Weitere Informationen finden Sie unter User-Defined Conversions.

  • Ersetzen Sie __typeof durch typeid.

  • Ersetzen Sie __try_cast durch safe_cast. Für Visual C++ 2005 wird diese Vorlage im cli Namespace definiert.

  • Wenn Sie Ihre Assembly mit den Attributen zur Assemblysignierung der CLR signieren, d. h. ihr einen starken Namen geben, sollten Sie diese Attribute aus dem Code entfernen und stattdessen die Linkeroptionen zur Assemblysignierung verwenden. Weitere Informationen finden Sie unter Assemblys mit starken Namen (Assemblysignierung).

Siehe auch

Konzepte

Gemischte (systemeigene und verwaltete) Assemblys

Language Features for Targeting the CLR