C# “为什么?”\";在Windows上添加新的行吗?

C# “为什么?”\";在Windows上添加新的行吗?,c#,.net,windows,newline,C#,.net,Windows,Newline,Windows上的换行标记应该是CR+LF,而在Unix上,它只是LF 因此,当我使用类似于Console.Write(“line1\nline2”),为什么它会“正常”工作并给我两行?我希望这个\n不起作用,只有\r\n的组合才起作用。'\n'是换行字符。传统上,它使打印机将纸张卷起一行'\r'是回车符,通常会导致打印头移动到纸张的最左边缘 在以这种方式解释字符的打印机和控制台上,line1\nline2的输出将是 line1 line2 许多控制台(和编辑器)将“\n”解释为您希

Windows上的换行标记应该是
CR+LF
,而在Unix上,它只是
LF


因此,当我使用类似于
Console.Write(“line1\nline2”),为什么它会“正常”工作并给我两行?我希望这个
\n
不起作用,只有
\r\n
的组合才起作用。

'\n'
是换行字符。传统上,它使打印机将纸张卷起一行
'\r'
是回车符,通常会导致打印头移动到纸张的最左边缘

在以这种方式解释字符的打印机和控制台上,
line1\nline2
的输出将是

line1
     line2
许多控制台(和编辑器)将“\n”解释为您希望开始一行,并将光标定位在该新行的开头。这就是你在这里看到的


您应该使用而不是硬编码任何特定常量。

文件编码!=<代码>控制台
解释


换句话说,虽然文件存在
CR
+
LF
的“Windows标准”,但只有
LF
\n
在控制台窗口中产生了适当的回车符和新行解释。

\n是换行符。在*nix和Windows系统上,它都应该创建2行。\r是回车符,它将书写工具移动到行首


根据我的经验,大多数现代控制台/编辑器具有足够的弹性,可以将\n解释为\r\n

,当您使用WriteLine()输出到控制台时,它会接受转义字符。当您使用StreamWriter并调用WriteLine()时,它会使您键入\r\n移到新行。我假设控制台已编程为接受转义字符,\n而不接受回车符。\r

这只是底层Windows控制台的标准行为。如果您将
0x0A
输出到控制台,则本机C应用程序将执行完全相同的操作


当然,你应该使用你的新台词<代码>环境。在Windows和类Unix系统上,NewLine解析为
\r\n

您使用什么来查看这样的文件?很可能C正在隐式地为您进行转换。我正在使用
控制台将这一行打印到命令行控制台。Write()
\n自Visual Studio首次亮相以来,Windows上出现了一条新线。我个人记得早在90年代初/中期就使用过它,这只是控制台处理程序的默认行为,默认情况下分配给console.Out。当您将控制台进程的输出重定向到一个文件并用编辑器打开该文件时,您会运气不佳。@OAOD:当然,
键入MyFileWithLashNDelimiters
将文本显示为单独的行或一个长行。不确定是哪个,但不管怎样,它都是一个观众。在他澄清评论之前,我回答说他正在使用Console.Write()。
\n
是ASCII表中的换行符,因此当然,您会得到一个新行。出乎意料的是,
控制台.Write
方法似乎也暗示了
\r
,询问者没有提供,这是回车。