在PHP中,我可以执行以下操作:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
C#中是否有类似的语言结构?
我知道有String.Format();
但我想知道是否可以在不调用字符串上的函数/方法的情况下完成。
答案 0 :(得分:170)
在C#6中,您可以使用string interpolation:
string name = "John";
string result = $"Hello {name}";
在Visual Studio中为此突出显示的语法使其具有高可读性,并且会检查所有标记。
答案 1 :(得分:77)
此功能不是内置于C#5或更低版本 更新:C#6现在支持字符串插值,请参阅更新的答案。
建议的方法是使用String.Format
:
string name = "Scott";
string output = String.Format("Hello {0}", name);
但是,我编写了一个名为SmartFormat的小型开源库,它扩展了String.Format
,以便它可以使用命名占位符(通过反射)。所以,你可以这样做:
string name = "Scott";
string output = Smart.Format("Hello {name}", new{name}); // Results in "Hello Scott".
希望你喜欢它!
答案 2 :(得分:6)
使用以下方法
1:方法一
var count = 123;
var message = $"Rows count is: {count}";
2:方法二
var count = 123;
var message = "Rows count is:" + count;
3:方法三
var count = 123;
var message = string.Format("Rows count is:{0}", count);
4:方法四
var count = 123;
var message = @"Rows
count
is:{0}" + count;
5:方法五
var count = 123;
var message = $@"Rows
count
is: {count}";
答案 3 :(得分:5)
直到C#5(-VS2013)你必须为它调用一个函数/方法。 “正常”函数,例如String.Format
或+运算符的重载。
string str = "Hello " + name; // This calls an overload of operator +.
在C#6(VS2015)中引入了字符串插值(如其他答案所述)。