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

时间:2009-06-18 23:45:18

标签: c# .net cross-platform

两者之间有什么区别(如果有的话)(相对于.Net)?

7 个答案:

答案 0 :(得分:184)

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

来自MSDN:

  

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

答案 1 :(得分:139)

源代码中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";
    }
}

source


.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
    }
}

sourceSystem.Private.CoreLib

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

sourceSystem.Runtime.Extensions

答案 2 :(得分:67)

正如其他人所提到的,Environment.NewLine返回一个特定于平台的字符串,用于开始一个新行,该行应该是:

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

请注意,在写入控制台时,不一定要使用Environment.NewLine。如有必要,控制台流会将"\n"转换为适当的换行序列。

答案 3 :(得分:22)

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

当您在Mono框架

上在Linux中部署代码时,您会发现这非常有用

答案 4 :(得分:8)

来自docs ...

  

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

答案 5 :(得分:4)

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

答案 6 :(得分:4)

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

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