Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use verbatim strings with interpolation?

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?

like image 330
Keith Avatar asked Jul 26 '15 15:07

Keith


People also ask

Can I use string interpolation?

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.

What is the correct syntax for string interpolation?

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.

What is interpolation string?

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.

Why do we use string interpolation?

speed/memory use Creating multiple strings and then concatenating them uses more memory and is slower than creating a single string one time.


1 Answers

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 @$.

like image 96
Keith Avatar answered Sep 30 '22 21:09

Keith