两者之间有什么区别(如果有的话)(相对于.Net)?
答案 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";
}
}
.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
}
}
source(System.Private.CoreLib
)
public static string NewLine => "\r\n";
source(System.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