为什么字符串格式在c#中不起作用

时间:2017-02-16 07:36:35

标签: c#

string test="add number here {0}";
int number=7;

为什么这不起作用

String.Format(test,number);
string res=test;

但是这项工作

String.Format("add number here {0}",number);

3 个答案:

答案 0 :(得分:3)

因为你测试错了。在这2行:

String.Format(test,number);
string res=test;

String.Format返回一个字符串。正如在documentation中可以看到的那样,这个新字符串是您想要的编号字符串。如果您将格式字符串test分配给res并检查string res现在是否具有所需的输出。你(当然)不会找到它而只是

  

“在此处添加号码{0}”;

您需要使用方法String.Format的返回值。在那里你会找到所需的输出:

string res = String.Format(test,number);
Console.WriteLine(res);

答案 1 :(得分:1)

让我为String.Format添加几条关于你的注释。

从您添加问题的第一个代码开始,我希望您误解String.Format的用法,正如您所料,它不会将输入字符串中的占位符替换为对象。实际上它用参数/对象替换占位符并返回另一个字符串。因此,您必须从.Format()方法查看实际格式化字符串的返回值。

这就是为什么这不起作用

String.Format(test,number);
string res=test;

虽然这样可以正常工作:

string res = String.Format(test,number);

答案 2 :(得分:0)

test = String.Format(test,number);