(.Netに関して)もしあれば、両者の違いは何ですか?
プラットフォームに依存します。 Windowsでは、実際には "\ r\n"です。
MSDNから:
UNIX以外のプラットフォームの場合は "\ r\n"を含む文字列、UNIXプラットフォームの場合は "\ n"を含む文字列。
ソースコードからの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
}
}
ソース (System.Private.CoreLib
内)
public static string NewLine => "\r\n";
ソース (System.Runtime.Extensions
内)
他の人が言ったように、Environment.NewLine
は改行を始めるためのプラットフォーム固有の文字列を返します。
"\r\n"
(\ u000D\u000A)"\n"
(\ u000A)"\r"
(\ u000D)(そのような実装が存在する場合)コンソールに書き込むときは、Environment.NewLineは必ずしも必要ではありません。必要ならば、コンソールストリームは"\n"
を適切な改行シーケンスに変換します。
Environment.NewLine
は、コードが実行されている対応するプラットフォームの改行文字を返します。
Mono フレームワークのlinuxでコードをデプロイするときに、これは非常に便利です。
のドキュメントから ...
UNIX以外のプラットフォームの場合は "\ r\n"を含む文字列、UNIXプラットフォームの場合は "\ n"を含む文字列。
複数行のメッセージを "\ r\n"で区切って表示しようとすると、問題が発生する可能性があります。
標準的な方法で物事を行い、Environment.NewLineを使用することは常に良い習慣です。
Windowsでは、Environment.NewLineは "\ r\n"と表示します。あなたがUnixベースの環境のために文字列を生成しているなら、あなたは "\ r"が欲しくありません。