2016-09-29 4 views
3

C# 6.0 bringt diesen raffinierten neuen Formatierungsvorgang durch ein $Insert dynamisches Format in interpoliert String

angegeben Statt dies zu tun

String lastName = "Doena"; 
String firstName = "DJ"; 

Console.WriteLine(String.Format("{1} {0}", lastName, firstName)); 

Sie diesen

Console.WriteLine($"{firstName} {lastName}"); 

tun kann Aber was ist Zahlenformate. Was passiert, wenn ich dies:

Decimal price = 9999.95m; 
Decimal freebie = 0; 

const String format = "#,##0.##"; 

Console.WriteLine(String.Format("{0:" + format + "}\t{1:" + format + "}", price, freebie)); 

ich das versucht:

Console.WriteLine($"{price:"{format}"}\t{freebie:"{format}"}"); 

und diese:

Console.WriteLine($"{price:{format}}\t{freebie:{format}}"); 

und diese:

Console.WriteLine($"{price:format}\t{freebie:format}"); 

Aber sie entweder nicht einmal kompilieren oder bringen Sie nicht das erhoffte Ergebnis.

Irgendwelche Ideen?

bearbeiten Howwie des answer die angemessene Art und Weise zu sein scheint hier zu gehen:

Console.WriteLine($"{price.ToString(format)}\t{freebie.ToString(format)}"); 
+1

Sie nicht tun können, , Grundsätzlich gilt. Sie müssen 'string.Format' explizit aufrufen. –

+0

Dies steht nicht im Zusammenhang mit C# 6.0. Es ist, als würde man fragen, warum man in früheren Versionen '{0: {1}}' nicht machen kann. – Groo

+0

Mögliches Duplikat von [String Interpolation mit Formatvariable] (http://stackoverflow.com/questions/32360434/string-interpolation-with-format-variable) – Sinatr

Antwort

2

Howwie des answer scheint die angemessene Art und Weise zu sein, hier zu gehen:

Console.WriteLine($"{price.ToString(format)}\t{freebie.ToString(format)}");