正在将变量打印到控制台

本文关键字:控制台 打印 变量 | 更新日期: 2023-09-27 18:25:25

有人能解释这两个代码中的差异吗。

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

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

哪个代码比其他代码更正确或更不正确?

正在将变量打印到控制台

在行中

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

将始终在+符号的左侧完成后进行接触。

在这一行

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

将打印其推杆位置。

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

这将首先在字符串中打印。

如果总数为10

输出:

10是我们的总数。

两者都是正确的,但打印方式不同。

这两种变体都是正确的,在这种情况下实际上是等效的。一种是使用字符串串联,将所有需要的字符串连接在一起,然后将它们+

另一个使用格式化,其中指定输出的格式,并提供将由格式化程序替换的参数。

如果只有一个参数,并且只使用一次,那么这两种方法或多或少都是可以理解的,并且代码长度或多或少相似。

但是,假设你需要写一些更具体的东西,比如用指定格式写一个人的信息,例如

姓氏姓氏(年龄)来自城市,住在"街道"#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);

在第一个例子中,结束格式非常不明显,很难说你是否忘记了某个地方的引号或括号,而在第二种情况下,格式相对明显。如果您稍后需要更改格式,即如果街道名称/编号需要在城市之前,在第一种情况下,您需要进行一些繁重的编辑,在第二种情况中,您只需要更改格式。


C#6.0具有字符串插值,这使得很好地格式化字符串变得更加容易和明显。你可以写:

string info = $"{person.FirstName} {person.LastName} ({person.Age}) from {person.City}, living on '{person.Street}' #{person.StreetNumber}";

Console.WriteLine("Our total"+ total)是输出的直接打印。

CCD_ 5将类似于CCD_ 6。

两者都是正确的,但第二种更可取,因为它确保了正确的格式,而且读起来更干净/维护起来更好。

在SO上已经有了一个非常彻底的答案。简而言之:

我怀疑其他答案可能会谈论表演上的成功,但老实说,如果存在的话,它将是最小的——以及这种串联版本不需要解析格式字符串。

从本质上讲,他认为什么更可读,这取决于作者。