{0}和+之间有什么区别?

时间:2013-05-03 20:28:06

标签: c# string string-formatting

使用{0}+之间是否存在任何差异,因为他们在屏幕上打印 length 的工作相同:

Console.WriteLine("Length={0}", length);
Console.WriteLine("Length="   + length);

5 个答案:

答案 0 :(得分:30)

在你琐碎的例子中没有区别。但是有很好的理由喜欢格式化的({0})选项:它使国际软件的本地化变得更加容易,并且使第三方编辑现有字符串变得更加容易。

想象一下,例如,您正在编写一个生成此错误消息的编译器:

"Cannot implicitly convert type 'int' to 'short'"

你真的想写代码吗

Console.WriteLine("Cannot implicitly convert type '" + sourceType + "' to '" + targetType + "'");

?天哪没有。您希望将此字符串放入资源中:

"Cannot implicitly convert type '{0}' to '{1}'"

然后写

Console.WriteLine(FormatError(Resources.NoImplicitConversion, sourceType, targetType));

因为那时您可以自由决定是否要将其更改为:

"Cannot implicitly convert from an expression of type '{0}' to the type '{1}'"

或者

"Conversion to '{1}' is not legal with a source expression of type '{0}'"

这些选择可以在以后由英语专业人士制作,无需更改代码。

您还可以将这些资源翻译成其他语言,再次而不更改代码

立即开始使用格式化字符串;当你需要编写适当使用字符串资源的可本地化软件时,你已经习惯了。

答案 1 :(得分:2)

第二行将创建一个字符串并打印出该字符串。 第一行将使用composite formatting,如string.Format。

Here是使用复合格式的一些很好的理由。

答案 2 :(得分:1)

有区别。

例如:

Console.WriteLine("the length is {0} which is the length", length);
Console.WriteLine("the length is "+length+" which is the length");

+连接两个字符串,{0}是一个占位符,用于插入字符串。

答案 3 :(得分:1)

{n}是一个占位符,可以与多个选项一起使用。 其中n是数字

在你的例子中,它会产生影响,最终结果与两个字符串的连接相同。但是像

这样的东西
var firstName = "babba";
var lastName ="abba";
var dataOfBirth = new Date();

Console
   .Write(" Person First Name : {0} | Last Name {1} }| Last Login : {2:d/M/yyyy HH:mm:ss}", 
          firstName, 
          secondName, 
          dateOfBirth);

它提供易于阅读的界面,易于格式化

答案 4 :(得分:0)

{n}其中n >= 0允许您按字符串中出现的顺序替换值。

string demo = "demo", example = "example";
Console.WriteLine("This is a {0} string used as an {1}", demo, example);

+允许您将两个或多个字符串连接在一起。

Console.WriteLine("This is a " + demo + " string used as an " + example);