Console.WriteLine的写法不同

时间:2011-09-29 13:07:19

标签: c#

真正基本问题的困惑: 我在很多书中都看过,他们使用Console.WriteLine作为:

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

而不是

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

它们之间有什么区别吗?

5 个答案:

答案 0 :(得分:8)

在你的例子中,几乎没有。但是,第一种情况可以很容易地扩展到

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

第二种方法可能有些麻烦。

答案 1 :(得分:3)

this thread中查看答案。在一个简单的例子中它并不重要,但是如果你在一个大循环中做这件事就会有性能方面的考虑。

答案 2 :(得分:1)

我相信你会在初学者的书中看到字符串连接,因为它很简单。在可以在这样简单的示例中使用之前,需要解释字符串格式。字符串连接非常简单,可能已经在本书的那一点上进行过教学(即使不是,通过实例学习也很简单。)

我可以看到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打印两次时,他们当然会感到惊讶。或者他们可能会因为在尝试%s字符串时不知道等效Console.WriteLine而感到沮丧。另一方面,字符串连接具有较少的陷阱,并且初学者可以更容易地扩展。当然,它更混乱但也更强大,在将一个人介绍给C#的书中可能令人困惑,因为字符串格式化语法会变得非常复杂:

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

上面的例子还说明了连接和字符串格式之间的区别。它们是不同的,但对于像你制作的那样简单的用法,它几乎没有区别。

答案 3 :(得分:0)

您的具体案例不会,更多信息

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

此致

答案 4 :(得分:0)

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

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);