问题
In PHP I can do the following:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
Is there a similar language construct in C#?
I know there is String.Format();
but I want to know if it can be done without calling a function/method on the string.
回答1:
In C# 6 you can use string interpolation:
string name = "John";
string result = $"Hello {name}";
The syntax highlighting for this in Visual Studio makes it highly readable and all of the tokens are checked.
回答2:
This functionality is not built-in to C# 5 or below.
Update: C# 6 now supports string interpolation, see newer answers.
The recommended way to do this would be with String.Format
:
string name = "Scott";
string output = String.Format("Hello {0}", name);
However, I wrote a small open-source library called SmartFormat that extends String.Format
so that it can use named placeholders (via reflection). So, you could do:
string name = "Scott";
string output = Smart.Format("Hello {name}", new{name}); // Results in "Hello Scott".
Hope you like it!
回答3:
Up to C#5 (-VS2013) you have to call a function/method for it. Either a "normal" function such as String.Format
or an overload of the + operator.
string str = "Hello " + name; // This calls an overload of operator +.
In C#6 (VS2015) string interpolation has been introduced (as described by other answers).
来源:https://stackoverflow.com/questions/7227413/using-variables-inside-strings