真正基本问题的困惑: 我在很多书中都看过,他们使用Console.WriteLine作为:
int i = 12;
Console.WriteLine("MyVariable value is {0}", i);
而不是
int i = 12;
Console.WriteLine("MyVariable value is" + i);
它们之间有什么区别吗?
答案 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)
答案 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);