“\ 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”。