在字符串中使用变量

时间:2011-08-29 07:42:50

标签: c# string string-formatting

在PHP中,我可以执行以下操作:

$name = 'John';
$var = "Hello {$name}";    // => Hello John

C#中是否有类似的语言结构?

我知道有String.Format();但我想知道是否可以在不调用字符串上的函数/方法的情况下完成。

4 个答案:

答案 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)中引入了字符串插值(如其他答案所述)。