The $ special
character identifies a string literal as an interpolated string. An
interpolated string is a string literal that might contain interpolation
expressions. When an interpolated string is resolved to a result string,
items with interpolation expressions are replaced by the string representations
of the expression results. This feature is available starting with C# 6. String
interpolation provides a more readable and convenient syntax to create
formatted strings than a string composite
formatting feature. The following example uses both features to
produce the same output:
string name = "Mark";
var date = DateTime.Now;
// Composite formatting:
Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.",
name, date.DayOfWeek, date);
// String interpolation:
Console.WriteLine($"Hello, {name}!
Today is {date.DayOfWeek}, it's {date:HH:mm} now.");
// Both calls produce
the same output that is similar to:
// Hello, Mark! Today is
Wednesday, it's 19:40 now.
Console.WriteLine($"|{"Left",-7}|{"Right",7}|");
const int FieldWidthRightAligned
= 20;
Console.WriteLine($"{Math.PI,FieldWidthRightAligned} - default formatting of the pi number");
Console.WriteLine($"{Math.PI,FieldWidthRightAligned:F3} - display
only three decimal digits of the pi number");
// Expected output is:
//
|Left | Right|
// 3.14159265358979
- default formatting of the pi number
// 3.142
- display only three decimal digits of the pi number
string MyName = "Horace";
int age = 34;
Console.WriteLine($"He asked, \"Is your name {MyName}?\", but didn't wait for a reply :-{{");
Console.WriteLine($"{name} is {age} year{(age == 1 ? "" : "s")} old.");
// Expected output is:
// He asked, "Is
your name Horace?", but didn't wait for a reply :-{
// Horace is 34 years
old.
double speedOfLight = 299792.458;
FormattableString message = $"The speed of light is {speedOfLight:N3} km/s.";
System.Globalization.CultureInfo.CurrentCulture
= System.Globalization.CultureInfo.GetCultureInfo("nl-NL");
string messageInCurrentCulture = message.ToString();
var specificCulture =
System.Globalization.CultureInfo.GetCultureInfo("en-IN");
string messageInSpecificCulture = message.ToString(specificCulture);
string messageInInvariantCulture =
FormattableString.Invariant(message);
Console.WriteLine($"{System.Globalization.CultureInfo.CurrentCulture,-10} {messageInCurrentCulture}");
Console.WriteLine($"{specificCulture,-10} {messageInSpecificCulture}");
Console.WriteLine($"{"Invariant",-10} {messageInInvariantCulture}");
// Expected output is:
//
nl-NL The speed of light is 299.792,458
km/s.
//
en-IN The speed of light is 2,99,792.458
km/s.
//
Invariant The speed of light is 299,792.458 km/s.
No comments:
Post a Comment