Difference between “
” and Environment.NewLine
如果有(关于.NET),这两者有什么区别?
取决于平台。在Windows上,它实际上是"
"。
来自msdn:
A string containing"
" for
non-Unix platforms, or a string
containing"
" for Unix platforms.
号
从源代码精确实现
.NET 4.6.1中的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /*===================================NewLine==================================== **Action: A property which returns the appropriate newline string for the given ** platform. **Returns: on Win32. **Arguments: None. **Exceptions: None. ==============================================================================*/ public static String NewLine { get { Contract.Ensures(Contract.Result<String>() != null); return" "; } } |
来源
.NET核心中的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /*===================================NewLine==================================== **Action: A property which returns the appropriate newline string for the ** given platform. **Returns: on Win32. **Arguments: None. **Exceptions: None. ==============================================================================*/ public static String NewLine { get { Contract.Ensures(Contract.Result() != null); #if !PLATFORM_UNIX return" "; #else return" "; #endif // !PLATFORM_UNIX } } |
号
来源(在
1 2 3 | public static string NewLine =>" "; |
来源(在
正如其他人提到的,
- 用于Windows的
" (u000du000a)"
- 用于Unix的
" (u000a)
" - Mac的
" (u000d)(如果存在这种实现)
"
请注意,在向控制台写入时,environment.newline不是严格必需的。如有必要,控制台流将把
"
当您在Linux中部署Mono框架上的代码时,您会发现这非常有用。
从医生那里…
A string containing"
" for
non-Unix platforms, or a string
containing"
" for Unix platforms.
号
当试图显示用"
"分隔的多行消息时,可能会遇到问题。
以标准的方式做事并使用环境总是一个很好的实践。
在Windows上运行时,environment.newline将给出"
"。如果要为基于Unix的环境生成字符串,则不需要使用"
"。