Velmi často používaná metoda String.Format() získala v C# 6.0 syntaktic-sugar v podobě zkráceného zápisu, který má být přehlednější a méně náchylný na chyby:
// C# 5.0 var s = String.Format("{0} is {1} year{{s}} old", p.Name, p.Age); // C# 6.0 cílová podoba s $ na začátku var s = $"{p.Name,20} is {p.Age:D3} year{{s}} old"; // C# 6.0 ve VS2015 Preview var s = "\{p.Name} is \{p.Age} year{s} old";
Půjde samozřejmě použít i další formátovací instrukce, např.
var s = $"{p.Name,20} is {p.Age:D3} year{s} old"; var s = $"{p.Name} is {p.Age} year{(p.Age == 1 ? "" : "s")} old";
Série článků o novinkách v C# 6.0:
- Auto-property initializers a getter-only (read-only) auto-properties
- Expression-bodied function members
- Using static
- Null-conditional operators (?., ?[], …)
- String inerpolation – zkrácený String.Format()
- nameof() expressions
- Index initializers – přehlednější inicializace slovníků
- Exception filters, await v catch/finally blocích
- Konstruktor struct bez parametrů
- Ostatní (extension-Add v initializers, overload resolution)
Pingback: C# 6.0: Null-conditional operators ?. [4/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Using static [3/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Expression-bodied function members [2/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Auto-property initializers a getter-only (read-only) auto-properties [1/10] | HAVIT Knowledge Base
Pingback: C# 6.0: nameof() expressions [6/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Index initializers – přehlednější inicializace slovníků [7/10] | HAVIT Knowledge Base
Pingback: C# 6.0: Exception filters, await v catch/finally bloku | HAVIT Knowledge Base
Pingback: C# 6.0: Konstruktor struct bez parametrů | HAVIT Knowledge Base
Pingback: C# 6.0: Ostatní (extension-Add v initializers, overload resolution) [10/10] | HAVIT Knowledge Base
Jak to funguje pod pokličkou:
Pokud použiji řádek označený „C# 6.0 ve VS2015 Preview“
var s = „\{p.Name} is \{p.Age} year{s} old“;
vygeneruje compiler toto volání:
object[] objArray1 = new object[] { p.Name, p.Age, „{„, „}“ };
Console.WriteLine(string.Format(„{0} is {1} year{2}s{3} old“, objArray1));
To se mi líbíTo se mi líbí