有人可以解释这两个代码的区别。
Console.WriteLine("Our total"+ total);
和
Console.WriteLine("Our total {0}", total);
哪个代码或多或少比其他代码正确?
答案 0 :(得分:2)
在这一行
Console.WriteLine("Our total"+ total);
在+
符号的左侧完成后,将始终联系。
在这一行
Console.WriteLine("Our total {0}", total);
将打印它的位置。
喜欢
Console.WriteLine("{0} is our total ", total);
这将首先在字符串中打印。
如果总数为10
输出:
10是我们的总数。
两者都是正确的,但印刷方式不同。
答案 1 :(得分:1)
Console.WriteLine("Our total"+ total)
是您输出的直接打印。
Console.WriteLine("Our total {0}", total)
就像string.Format("Our total {0}", total)
。
两者都是正确的,但第二种是正确的,因为它确保了正确的格式化,并且更清晰,更易于阅读/更好地维护。
答案 2 :(得分:1)
有一个非常彻底的答案on already on SO。简而言之:
我怀疑其他答案可能会谈到性能上的提升,但仍然存在 老实说,如果存在的话,它将是最小的 - 这种连接 版本不需要解析格式字符串。
基本上,作者应该考虑他认为更具可读性的内容。
答案 3 :(得分:1)
两种变体都是正确的,在这种情况下实际上是等同的。
一个使用字符串连接,您可以在其中获取所需的所有字符串,并将它们放在一起+
。
另一个使用格式,您可以在其中指定输出的格式,并提供将由格式化程序替换的参数。
如果您只有一个参数,并且只使用一次,则这两种方法或多或少都可以理解,并且或多或少具有相似的代码长度。
但是,我们要说你需要写一些更具体的内容,比如指定格式的人的信息,例如:
来自City的FirstName LastName(Age),居住在' Street' #StreetNumber
使用连接(假设你有一个person
变量)它看起来像:
string info = person.FirstName + " " + person.LastName + " ("
+ person.Age + ") from " + person.City + ", living on '"
+ person.Street + "' #" + person.StreetNumber;
并使用格式化,它看起来像:
string info = string.Format("{0} {1} ({2}) from {3}, living on '{4}' #{5}",
person.FirstName, person.LastName, person.Age,
person.City, person.Street, person.StreetNumber);
在第一个例子中,结束格式真的不明显,如果你忘记某个引号或括号,很难说,在第二个例子中格式相对明显。如果您需要稍后更改格式,即如果街道名称/号码需要在城市之前,在第一种情况下,您需要进行一些繁重的编辑,而在第二种情况下,您需要d只需要改变格式。
C#6.0有字符串插值,这使得格式化字符串变得更加容易和明显。你可以写:
string info = $"{person.FirstName} {person.LastName} ({person.Age}) from {person.City}, living on '{person.Street}' #{person.StreetNumber}";