【发布时间】:2011-08-29 07:42:49
【问题描述】:
在 PHP 中,我可以执行以下操作:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
C# 中有类似的语言结构吗?
我知道有String.Format();,但我想知道它是否可以在不调用字符串上的函数/方法的情况下完成。
【问题讨论】:
标签: c# string string-formatting
在 PHP 中,我可以执行以下操作:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
C# 中有类似的语言结构吗?
我知道有String.Format();,但我想知道它是否可以在不调用字符串上的函数/方法的情况下完成。
【问题讨论】:
标签: c# string string-formatting
在 C# 6 中,您可以使用 string interpolation:
string name = "John";
string result = $"Hello {name}";
Visual Studio 中的语法突出显示使其具有高度可读性,并且所有标记都经过检查。
【讨论】:
此功能不是 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".
希望你喜欢!
【讨论】:
使用以下方法
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}";
【讨论】:
var count = 123; var text = "Rows count is: {count}"; var message = $text;?
在 C#5 (-VS2013) 之前,您必须为其调用函数/方法。要么是“普通”函数,例如 String.Format,要么是 + 运算符的重载。
string str = "Hello " + name; // This calls an overload of operator +.
在 C#6 (VS2015) 中引入了字符串插值(如其他答案所述)。
【讨论】: