控制台.尝试不同的写作方式

本文关键字:方式 控制台 | 更新日期: 2023-09-27 18:09:58

困惑在一个很基本的问题上:我在很多书中看到,他们使用控制台。WriteLine:

int i = 12;
Console.WriteLine("MyVariable value is {0}", i);
不是

int i = 12;
Console.WriteLine("MyVariable value is" + i);

它们之间有什么区别吗?

控制台.尝试不同的写作方式

在您的示例中,实际上不是。但是,第一种情况可以很容易地扩展为

Console.WriteLine("MyVariable value is {0} and myothervar is {1}", i, j);

对于第二种方法来说可能有点麻烦

查看这个帖子的答案。在简单的情况下,这并不重要,但如果您在大循环或其他地方这样做,则会考虑性能问题。

也许这对将来的人有帮助。现在有第三种方法(插值),它是最干净的!它们只是同一事物的不同写法。

int i = 12;
// Interpolation Method- Req. C# 6 or later [Cleanest]
Console.WriteLine($"MyVariable value is {i}");
// Concatenation Method (from VB days)
Console.WriteLine("MyVariable value is " + i); 
// Format Method (from C days)
Console.WriteLine("MyVariable value is {0}", i);

我相信您在初学者的书中看到过字符串连接,因为它很简单。在这样一个简单的示例中使用字符串格式之前,需要对其进行解释。字符串连接非常简单,可能在书中已经教过了(即使没有,也足够简单,可以通过示例来学习)。

我可以看到C程序员在第一次遇到格式语法时可能会被它弄糊涂。当试图将其扩展到两个变量时,他们可能会认为需要这样写:

int numA = 3;
int numB = 5;
Console.WriteLine("numA is {0} and numB is {0}", numA, numB);

认为它类似于C的printf,其中{0}等于%d:

printf("numA is %d and numB is %d", numA, numB);

他们当然会对varA被打印两次感到惊讶。或者,当试图对字符串进行Console.WriteLine操作时,他们可能会因为不知道%s的等量物而感到沮丧。另一方面,字符串连接的缺陷更少,初学者更容易扩展。当然,它更杂乱,但也更强大,在一本介绍c#的书中,这种强大可能会让人感到困惑,因为字符串格式化语法可能变得相当复杂:

Console.WriteLine("numA is {0,17:$00.00####}", numA);

上面的例子还说明了连接和字符串格式化之间的区别。

您的具体情况将不会,以获取更多信息

http://msdn.microsoft.com/en-us/library/ms228362.aspx