\ n和Environment.NewLine之间的区别


Answers:


203

取决于平台。在Windows上,它实际上是“ \ r \ n”。

从MSDN:

对于非Unix平台,包含“ \ r \ n”的字符串,对于Unix平台,包含“ \ n”的字符串。


5
.NET在Microsoft的文档中可以运行Microsoft的哪个UNIX平台?(我是说,是Mono的一部分。)
杰克

10
@Jack您可能正在写入将在Unix平台中打开的文件。或以unix平台接收的软件包发送文本。几个月后,.net将在Unix平台上运行。它已经开始
John Demetriou

因此,为了清楚起见:在非Unix平台Environment.NewLine上,\r\n\n也被称为“换行”。他们为什么不以后者更为知名的名称将其称为“换行”,以消除混乱?他们也可以使用\l
rory.ap 18/09/26

157

Environment.NewLine从源代码的确切实现:

.NET 4.6.1中的实现:

/*===================================NewLine====================================
**Action: A property which returns the appropriate newline string for the given
**        platform.
**Returns: \r\n on Win32.
**Arguments: None.
**Exceptions: None.
==============================================================================*/
public static String NewLine {
    get {
        Contract.Ensures(Contract.Result<String>() != null);
        return "\r\n";
    }
}

资源


.NET Core中的实现:

/*===================================NewLine====================================
**Action: A property which returns the appropriate newline string for the
**        given platform.
**Returns: \r\n on Win32.
**Arguments: None.
**Exceptions: None.
==============================================================================*/
public static String NewLine {
    get {
        Contract.Ensures(Contract.Result() != null);
#if !PLATFORM_UNIX
        return "\r\n";
#else
        return "\n";
#endif // !PLATFORM_UNIX
    }
}

来源(在中System.Private.CoreLib

public static string NewLine => "\r\n";

来源(在中System.Runtime.Extensions


10
是的:)出于某种原因,我期望.NET实现是一个巨大的复杂功能
developerbmw

考虑到这种情况下源代码的简单性,可能应该是答案。
克里斯·沃尔特

70

如其他人所述,Environment.NewLine返回平台特定的字符串以开始新行,该字符串应为:

  • "\r\n" (\ u000D \ u000A)对于Windows
  • "\n" (\ u000A)对于Unix
  • "\r" (\ u000D)对于Mac(如果存在这种实现)

请注意,在写入控制台时,并非严格要求Environment.NewLine。"\n"如果需要,控制台流将转换为适当的换行序列。


Mac实现确实存在。只是单声道。在任何东西上运行。
Dykam'1

24
请注意,那将是旧的Mac。新(OSX)\n
macs

2
@Dykam,是的,但是它在我的HP48gx上运行时确实很慢
cod3monk3y 2014年

1
正如其他人提到的那样,并且在此问题所附的.Net源文件中也可以看到,此答案不正确。
克里斯·沃尔特

2
@Blieque只是说这在2009年可能是对的,而不是事实。我没有检查。
aloisdg移至codidact.com,2018年

23

Environment.NewLine 将为您的代码在其中运行的相应平台返回换行符

当您在Mono框架上的linux中部署代码时,您会发现这非常有用


8

文档 ...

对于非Unix平台,包含“ \ r \ n”的字符串,对于Unix平台,包含“ \ n”的字符串。


4

在Windows上运行时,Environment.NewLine将给出“ \ r \ n”。如果要为基于Unix的环境生成字符串,则不需要“ \ r”。


4

尝试显示用“ \ r \ n”分隔的多行消息时,您可能会遇到麻烦。

以标准方式执行操作并使用Environment.NewLine始终是一个好习惯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.