对C#字符的特殊含义感到困惑

时间:2015-01-29 19:27:41

标签: c#

我是C#编程的新手,我不明白角色逃避是如何运作的。我试了很多,但只有' \ t'像它应该的工作。 我的代码的一个例子:

        textBox1.Text = "asd";
        textBox1.Text = textBox1.Text + '\n';
        textBox1.Text = textBox1.Text + "asd";

MultiLine已启用,但我的输出只是" asdasd"没有打破这条线。 我希望你们中的一些人知道答案是什么。

2 个答案:

答案 0 :(得分:9)

Windows控件中的换行符需要"\r\n",因为这是Windows的正常换行符组合。 (换行符是各地程序员的祸根。不同的操作系统使用不同的字符序列作为“典型”换行符。)

"\r\n"是两个字符:\r用于回车(U + 000D),\n用于换行(U + 000A)。不过,您不需要在三个语句中执行此操作:

textBox1.Text = "First line\r\nSecond line";

现在,我故意使用\r\n代替Environment.NewLine,理由是如果您使用System.Windows.Forms,那么这些将是面向Windows的控件。我不清楚Windows Forms的实现在Mac或Linux上会做什么,正常的换行符是不同的。 (我的猜测是,为了简单起见,务实的实现会在\r\n\r\n中突破,就像TextReader一样。)

有时 - 例如,如果您要在同一台计算机上编写文本文件以供使用 - 最好使用Environment.NewLine

有时候 - 比如当你实现像强制要求特定换行符格式的HTTP等网络协议时 - 最好明白它。

有时 - 例如在这种情况下 - 它只是不清楚。但是,它总是值得考虑。

有关C#中转义序列的完整列表,您可以查看C#语言规范(总是很有趣!)或查看包含该信息的Strings article等。

答案 1 :(得分:5)

在C#中插入换行符最清晰的方法是:

    textBox1.Text = "asd";
    textBox1.Text = textBox1.Text + Environment.NewLine;
    textBox1.Text = textBox1.Text + "asd";

此代码段会将textBox1文字设置为" asd",然后为其添加换行符,然后在第二行,它会添加" { {1}}"试。

您感到困惑的特殊字符是计算机使用电传打字机进行所有输出时的伪影。电传打印机在数字显示器之前已有数年之久了。

  • \ n告诉打印机(输出)将打印头向下移动一行(新行)。
  • \ r告诉打印机(输出)将打印头移回行的开头(回车)。

组合,这导致打印头位于下一行的开头,准备输出到干净的纸张上。

可以在互联网上轻松查找更多信息,包括Wikipedia's NewLine article

等地点