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() != 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 } }
(in System.Private.CoreLib
)
public static string NewLine => "\r\n";
(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