“\ n”和Environment.NewLine之间的区别

如果有的话(关于.Net),两者有什么区别?

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

来自MSDN:

包含用于非Unix平台的“\ r \ n”的string,或用于Unix平台的包含“\ n”的string。

从源代码中精确的执行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核心中的实现:

 /*===================================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

正如其他人所说, Environment.NewLine返回一个平台特定的string开始一个新行,应该是:

  • "\r\n" (\ u000D \ u000A)适用于Windows
  • "\n" (\ u000A)用于Unix
  • "\r" (\ u000D)对于Mac(如果存在此类实现)

请注意,写入控制台时,Environment.NewLine不是必需的。 如有必要,控制台stream会将"\n"转换为适当的新行序列。

Environment.NewLine将返回代码运行的相应平台的换行符

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

从文档 …

包含用于非Unix平台的“\ r \ n”的string,或用于Unix平台的包含“\ n”的string。

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

以标准方式做事情总是一个好习惯,并使用Environment.NewLine

Environment.NewLine将在Windows上运行时提供“\ r \ n”。 如果您正在为基于Unix的环境生成string,则不需要“\ r”。