C# 将变量打印到控制台

C# 将变量打印到控制台,c#,C#,有人能解释这两种代码的区别吗 Console.WriteLine("Our total"+ total); 及 哪一个代码比其他代码更正确?在这一行中 Console.WriteLine("Our total"+ total); Console.WriteLine("Our total {0}", total); 将始终在+标志左侧完成后联系 在这一行 Console.WriteLine("Our total"+ total); Console.WriteLine("Our total

有人能解释这两种代码的区别吗

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

哪一个代码比其他代码更正确?

在这一行中

Console.WriteLine("Our total"+ total);
Console.WriteLine("Our total {0}", total);
将始终在
+
标志左侧完成后联系

在这一行

Console.WriteLine("Our total"+ total);
Console.WriteLine("Our total {0}", total);
将打印其位置所在的位置

这将在字符串中首先打印

如果总数是10

输出:

10是我们的总数

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

在这一行中

Console.WriteLine("Our total"+ total);
Console.WriteLine("Our total {0}", total);
将始终在
+
标志左侧完成后联系

在这一行

Console.WriteLine("Our total"+ total);
Console.WriteLine("Our total {0}", total);
将打印其位置所在的位置

这将在字符串中首先打印

如果总数是10

输出:

10是我们的总数

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

控制台。WriteLine(“我们的总计”+总计)
直接打印您的输出

Console.WriteLine(“我们的总计{0}”,总计)
类似于
string.Format(“我们的总计{0}”,总计)

两者都是正确的,但第二个是首选的,因为它确保了正确的格式,并且更易于阅读/维护。

控制台。WriteLine(“我们的总计”+总计)
是输出的直接打印

Console.WriteLine(“我们的总计{0}”,总计)
类似于
string.Format(“我们的总计{0}”,总计)


这两种方法都是正确的,但第二种方法更可取,因为它可以确保正确的格式,并且更易于阅读/维护。

有一个非常全面的答案。简言之:

我怀疑其他的答案可能是关于性能的影响,但是 老实说,如果存在的话,它将是最小的-并且这种连接 版本不需要解析格式字符串


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

有一个非常彻底的答案。简言之:

我怀疑其他的答案可能是关于性能的影响,但是 老实说,如果存在的话,它将是最小的-并且这种连接 版本不需要解析格式字符串


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

这两种变体都是正确的,在这种情况下实际上是等效的。 一种是使用字符串连接,在这里您可以获取所需的所有字符串,然后将它们组合在一起

另一种使用格式化,您可以在其中指定输出的格式,并提供将由格式化程序替换的参数

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

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

名字姓氏(年龄)来自城市,住在“街道”#街道号码

使用串联(并假设您有一个
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);
使用格式,它看起来像:

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

这两种变体都是正确的,在这种情况下实际上是等效的。 一种是使用字符串连接,在这里您可以获取所需的所有字符串,然后将它们组合在一起

另一种使用格式化,您可以在其中指定输出的格式,并提供将由格式化程序替换的参数

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

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

名字姓氏(年龄)来自城市,住在“街道”#街道号码

使用串联(并假设您有一个
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);
使用格式,它看起来像:

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(string.Format(“我们的总数{0}”,total))两种方式都是correct@Irshad,不是真的,两个都很好。第一个可以连接字符串(顺便说一下,您在“我们的总计”后面缺少一个空格)。第二个更灵活,允许您将第二个字符串放在结果的任何位置(例如
(“我们的总计为{0}$,您是一个好客户”,总计)
后者应该是
Console.WriteLine(string.Format(“我们的总数{0}”,total));
两种方式都是correct@Irshad,不是真的,两者都很好,第一个可以连接字符串(顺便说一下,在“我们的总数”后面缺少一个空格)。第二个更灵活,允许您将第二个字符串放在结果的任何位置(例如
(“我们的总数为{0}$,您是一个好客户”,Total)