将变量打印到控制台

时间:2015-12-03 10:26:11

标签: c#

有人可以解释这两个代码的区别。

Console.WriteLine("Our total"+ total);

Console.WriteLine("Our total {0}", total);

哪个代码或多或少比其他代码正确?

4 个答案:

答案 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}";