In C# 6 there is a new feature: interpolated strings. These let you put expressions directly into code.
Rather than relying on indexes:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
the above becomes:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
However, we have a lot of strings across multiple lines using verbatim strings (mainly SQL statements) like this:
string s = string.Format(@"Result... Adding ""{0}"" and {1} to foobar: {2}", x, this.Y(), x.GetLog());
Reverting these to regular strings seems messy:
string s = "Result...\r\n" + $"Adding \"{x}\" and {this.Y()} to foobar:\r\n" + x.GetLog().ToString();
How to use both verbatim and interpolated strings together?
Beginning with C# 10, you can use string interpolation to initialize a constant string. All expressions used for placeholders must be constant strings. In other words, every interpolation expression must be a string, and it must be a compile time constant.
Syntax of string interpolation starts with a '$' symbol and expressions are defined within a bracket {} using the following syntax. Where: interpolatedExpression - The expression that produces a result to be formatted.
In computer programming, string interpolation (or variable interpolation, variable substitution, or variable expansion) is the process of evaluating a string literal containing one or more placeholders, yielding a result in which the placeholders are replaced with their corresponding values.
speed/memory use Creating multiple strings and then concatenating them uses more memory and is slower than creating a single string one time.
You can apply both $
and @
prefixes to the same string:
string s = $@"Result... Adding ""{x}"" and {this.Y()} to foobar: {x.GetLog()}";
Since being introduced in C# 6, interpolated verbatim strings had to start with the tokens $@
, but starting with C# 8, you can use either $@
or @$
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With