Neues in C# 7.2What's new in C# 7.2

C# 7.2 ist ein weiteres Release einer Unterversion, das eine Reihe nützlicher Funktionen ergänzt.C# 7.2 is another point release that adds a number of useful features. Ein Aspekt für diesen Release ist die effizientere Arbeit mit Werttypen durch Vermeiden unnötiger Kopien oder Zuweisungen.One theme for this release is working more efficiently with value types by avoiding unnecessary copies or allocations.

Die restlichen Funktionen sind kleine Features, die den Komfort steigern.The remaining features are small, nice-to-have features.

C# 7.2 verwendet das Konfigurationselement Sprachversionsauswahl, um die Version der Compilersprache auszuwählen.C# 7.2 uses the language version selection configuration element to select the compiler language version.

Die neuen Sprachfeatures in diesem Release umfassen:The new language features in this release are:

Verweissemantik mit WerttypenReference semantics with value types

In 7.2 eingeführte Sprachfeatures ermöglichen das Arbeiten mit Werttypen bei Verwendung der Verweissemantik.Language features introduced in 7.2 let you work with value types while using reference semantics. Sie dienen dazu, die Leistung durch Minimieren des Kopierens von Werttypen zu steigern, ohne die Speicherzuweisungen nach sich zu ziehen, die eine Verwendung von Verweistypen mit sich bringen würde.They are designed to increase performance by minimizing copying value types without incurring the memory allocations associated with using reference types. Das Feature beinhaltet:The features include:

  • Den in-Modifizierer für Parameter zur Angabe, dass ein Argument durch Verweis übergeben, von der aufgerufenen Methode aber nicht verändert wird.The in modifier on parameters, to specify that an argument is passed by reference but not modified by the called method.
  • Der ref readonly-Modifizierer für die Methodenrückgabe, um anzugeben, dass eine Methode ihren Wert als Verweis zurückgibt und keinen Schreibzugriff auf dieses Objekt zulässt.The ref readonly modifier on method returns, to indicate that a method returns its value by reference but doesn't allow writes to that object.
  • Die readonly struct-Deklaration, um anzugeben, dass eine Struktur unveränderlich ist und ihren Membermethoden als in-Parameter übergeben werden sollte.The readonly struct declaration, to indicate that a struct is immutable and should be passed as an in parameter to its member methods.
  • Die ref struct-Deklaration, um anzugeben, dass ein Strukturtyp direkt auf verwalteten Arbeitsspeicher zugreift und immer per Stapel zugeordnet werden muss.The ref struct declaration, to indicate that a struct type accesses managed memory directly and must always be stack allocated.

Weitere Informationen zu allen diesen Änderungen finden Sie unter Verwenden von Werttypen mit Verweissemantik.You can read more about all these changes in Using value types with reference semantics.

Nicht schließende benannte ArgumenteNon-trailing named arguments

Methodenaufrufe dürfen jetzt benannte Argumente verwenden, die positionellen Argumenten vorstehen, wenn diese benannten Argumente in der richtigen Position verwendet werden.Method calls may now use named arguments that precede positional arguments when those named arguments are in the correct positions. Weitere Informationen finden Sie unter Benannte und optionale Argumente.For more information see Named and optional arguments.

Führende Unterstriche in numerischen LiteralenLeading underscores in numeric literals

Die Implementierung der Unterstützung für Stellentrennzeichen in C# 7.0 ließ den Unterstrich _ nicht als erstes Zeichen von Literalwerten zu.The implementation of support for digit separators in C# 7.0 didn't allow the _ to be the first character of the literal value. Hexadezimale und binäre numerische Literale dürfen jetzt mit einem _ beginnen.Hex and binary numeric literals may now begin with an _.

Zum Beispiel:For example:

int binaryValue = 0b_0101_0101;

private protected

Schließlich zeigt der neue, zusammengesetzte Zugriffsmodifizierer private protected an, dass auf ein Element durch eine es enthaltende Klasse oder durch innerhalb der gleichen Assembly deklarierte abgeleitete Klassen zugegriffen werden darf.Finally, a new compound access modifier: private protected indicates that a member may be accessed by containing class or derived classes that are declared in the same assembly. Während protected internal den Zugriff durch abgeleitete Klassen oder Klassen, die sich in der gleichen Assembly befinden, erlaubt, schränkt private protected den Zugriff auf innerhalb der gleichen Assembly deklarierte abgeleitete Typen ein.While protected internal allows access by derived classes or classes that are in the same assembly, private protected limits access to derived types declared in the same assembly.

Weitere Informationen finden Sie unter Zugriffsmodifizierer in der Sprachreferenz.For more information see access modifiers in the language reference.