© DrHitch/Shutterstock.com
Einblicke in C# 6.0

Anhang


C#-6.0-Spickzettel

Hinweis

Den C#-6.0-Spickzettel können Sie sich in kompakter Form als PDF unter folgendem Link herunterladen:

https://entwickler.de/wp-content/uploads/2016/03/c-sharp-spickzettel.pdf

C# 6.0

Die erweiterte Sprachsyntax von C# Version 6.0 ist sowohl in .NET Framework 4.6 als auch .NET Core 5.0 und Mono 4.0 verfügbar.

Tabelle_Spickzettel.png

String-Interpolation

Durch Voranstellen des Dollarzeichens $ vor eine Zeichenkette kann man anstelle der nachgestellten Parameterliste bei String.Format() die einzelnen Ausdrücke direkt in die geschweiften Klammern schreiben. Formatierungsausdrücke sind weiterhin möglich.

var ausgabeAlt = String.Format("Kunde #{0:0000}: {1} ist in der Liste seit {2:d}.", k.ID, k.GanzerName, k.ErzeugtAm);

var ausgabeNeu = $"Kunde #{k.ID:0000}: {k.GanzerName} ist in der Liste seit {k.ErzeugtAm:d}.";

Bei Verwendung des bedingten Operators ? : sind zusätzliche runde Klammern vor und nach dem Ausdruck notwendig, um eine Verwechselung mit einem Formatierungsausdruck zu vermeiden.

Console.WriteLine($"Stammkunde: {(stammkunde ? "Ja" : "Nein")}");

Operator ?.

Der bisher vorhandene Punktoperator (.) liefert einen Laufzeitfehler (NullReferenceException), wenn der Ausdruck vor dem Punkt den Wert null hat. Der neue Operator ?. liefert in diesem Fall null. Microsoft nennt den Operator Null-conditional Operator oder Null-propagating Operator.

string kundenname = repository?.GetKunde()?.Name;

Der neue Operator kann auch beim Zugriff auf Indexe eingesetzt werden. Allerdings fängt der Operator nur den Fall ab, dass die Listenvariable den Wert null hat. Es gibt weiterhin einen Laufzeitfehler (ArgumentOutOfRangeException), falls es das angesprochene Element in der Liste nicht gibt.

string kundenname = kundenListe?[123]?.GanzerName;

Operator „nameof“

Der neue Operator nameof liefert den Namen eines Bezeichners als Zeichenkette (bei mehrgliedrigen Namen nur den letzten Teil). Dieser Operator erhöht die Robustheit und erleichtert das Refactoring in Situationen, in denen der Name einer Klasse oder eines Klassenmitglieds als Zeichenkette zu übergeben ist, z. B. ArgumentNullException, Dependency Properties und PropertyChangedEventArgs.

 public void SaveKunde(Kunde kunde)
{
if (kunde == null) throw new ArgumentNullException(nameof(kunde));
// ...
}

public int MitarbeiterAnzahl
{
get { return mitarbeiterAnzahl; }
set
{
PropertyChanged(this, new PropertyChangedEventArgs(nameof(MitarbeiterAnzahl)));
mitarbeiterAnzahl = value;
}
}

Index-Initializer

Für die Initialisierung...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang