回车和换行... C#中是否都需要?

Luk*_*lch 29 c# carriage-return linefeed

将新行字符插入字符串时,我通常会这样做:

str = "First line\nSecond line";
Run Code Online (Sandbox Code Playgroud)

在C#中,这是标准做法吗?我还应该包含'回车'字符'\ r'吗?以下是否有任何区别,如果有,它们是什么?

str = "First line\nSecond line";
str = "First line\r\nSecond line";
Run Code Online (Sandbox Code Playgroud)

如果同时使用'回车'和'换行'是标准做法,是否有特定的订单?为什么?

注意:我在SO上阅读了一些其他帖子,但没有找到特定于.NET/C#的答案.

编辑:测试一个小应用程序后,我没有看到'\n'和'\n\r'或'\ r \n'之间有任何区别.

Ale*_*kov 66

System.Environment.NewLine是您正在寻找的常量 - http://msdn.microsoft.com/en-us/library/system.environment.newline.aspx,它将提供特定于环境的组合,大多数程序在给定操作系统上将考虑"下一行文本".

在实践中,大多数文本工具都会将包含\n在"新行"中的所有变体视为您的文本"foo\nbar".特别是如果您正在尝试构建多行格式字符串,例如$"V1 = {value1}\nV2 = {value2}\n".如果要使用字符串连接构建文本,请考虑使用NewLine.在任何情况下,确保使用的工具以您希望的方式理解输出,并且您可能需要例如始终使用\r\n而不管平台如果您选择的编辑器无法正确打开文件.

请注意,如果您计划使用这些方法编写文本,请WriteLine使用NewLine这样的方法,以避免使用\n因为结果文本可能包含混合\r\n而且\n可能会混淆某些工具并且看起来不是很整洁.

有关历史背景,请参阅\n和\ r \n之间的差异?

  • @jonezy - 我认为这不正确; `Environment.Newline`是整个可执行文件的常量(参见[msdn](http://msdn.microsoft.com/en-us/library/system.environment.newline%28v=vs.110%29.aspx) ).您能否提供一个链接,解释该值是如何基于上下文的? (7认同)
  • 我知道这个常量存在,但这是否意味着应该避免使用\n\r \n字符?如果是这样,为什么? (3认同)

Bri*_*ach 10

回车符\r将光标移动到当前行的开头.换行\n会导致下一行,可能是下一行的开头; 这是Alexei在上面注意到的平台相关部分(在*nix系统上\n为您提供回车和换行符,在Windows中它没有)

你使用什么取决于你想要做什么.如果我想在控制台上制作一个小东西,我会这样做str = "|\r/\r-\r\\\r";.