https://docs.microsoft.com/en-us/dotnet/api/system.environment.newline?view=netframework-4.7.2
https://*.com/questions/1015766/difference-between-n-and-environment-newline
Answer1
Exact implementation of Environment.NewLine
from the source code:
The implementation in .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";
}
}
The implementation in .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 (in System.Runtime.Extensions
)
Answer2
As others have mentioned, Environment.NewLine
returns a platform-specific string for beginning a new line, which should be:
-
"\r\n"
(\u000D\u000A) for Windows -
"\n"
(\u000A) for Unix -
"\r"
(\u000D) for Mac (if such implementation existed)
Note that when writing to the console, Environment.NewLine is not strictly necessary. The console stream will translate "\n"
to the appropriate new-line sequence, if necessary.
Just a note, that would be old macs; new (OSX) macs use \n