这两者之间的区别是什么(如果有的话)?


当前回答

环境的精确实现。来自源代码的换行:

.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 (in System.Private.CoreLib)

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

source(在System.Runtime.Extensions中)

其他回答

环境。NewLine将返回运行代码的相应平台的换行符

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

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

从MSDN:

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

环境的精确实现。来自源代码的换行:

.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 (in System.Private.CoreLib)

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

source(在System.Runtime.Extensions中)

从医生那里…

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

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

“\r\n”(\u000D\u000A)用于Windows “\n”(\u000A)用于Unix “\r”(\u000D) for Mac(如果存在这样的实现)

注意,当写入控制台时,环境。NewLine不是必须的。如果需要,控制台流将“\n”转换为适当的新行序列。