C# 6 – String Interpolation
Die – meiner Meinung nach – zwei besten C# 6 Features sind der null propagation operator und string interpolatation. Falls Du diese Features noch nicht einsetzt, gibt es hier eine kurze Einführung zu String Interpolation.
String Interpolation
String interpolation wird mit C# 6 mit dem $ Prefix gestartet. Statt das zu schreiben:
string s1 = "World"; string s2 = string.Format("Hello, {0}!", s1);
ist es jetzt möglich diesen Code zu schreiben:
string s1 = "World2; string s2 = $"Hello, {s1}!";
String Interpolation reduziert den Code und macht ihn leichter lesbar!
Der Compiler generiert dabei den gleichen IL Code, kann den Code aber auch optimieren (abhängig von den Formaten die verwendet werden). Es ist auch möglich Format Strings zu verwenden!
Ein interpolierter String kann auch einer Variable vom Typ FormattableString zugewiesen werden. Mit diesem Typ können auf die Bereiche im String zugegriffen werden – und damit interessante Funktionalität gebaut um den String zu ändern:
int x = 3, y = 4; FormattableString s = $"The result of {x} + {y} is {x + y}"; WriteLine($"format: {s.Format}"); for (int i = 0; i y s.ArgumentCount; i++) { WriteLine($"argument {i}: {s.GetArgument(i)}"); }
Das Ergebnis:
format: The result of {0} + {1} is {2} argument 0: 3 argument 1: 4 argument 2: 7
FormattableString erlaubt es eigene Features mit String Interpolation zu definieren
Mit FormattableString als Argument ist es einfach möglich das String Ergebnis zu ändern, z.B. mit der Invariant Culture:
string Invariant(FormattableString s) => s.ToString(CultureInfo.InvariantCulture);
Das Beispiel zeigt ein DateTime Objekt mit dem das Datum im Default und Invariant Format geschrieben wird:
var day = new DateTime(2025, 2, 14); WriteLine($"{day:d}"); WriteLine(Invariant($"{day:d}");
Die FormattableString Klasse definiert selbst die static Methode Invariant die das gleiche macht:
WriteLine(FormattableString.Invariant($"{day:d}");
There’s More!
Andere C# 6 Features, wie z.B. der Null Propagation Operator kommt in einem weiteren Blog Post. String Interpolation wie null propagation, static using, expression-bodied methods, expression-bodied properties, auto implemented property initializers, read-only auto properties, der nameof Operator, dictionary intitializers, exception filters, await in catch und viel mehr werden in meinem neuen Buch Professional C# 6 and .NET Core 1.0 beschrieben. String interpolation gibt es im Detail in Kapitel 10, „Strings and Regular Expressions“, und wird in vielen Samples im gesamten Buch verwendet. Mehr Informationen zu den C# 6 Features gibt es auch in meinen .NET Workshops.
Welche C# 6 Features findest Du am interessantesten?
Christian
Trackbacks & Pingbacks