web-dev-qa-db-ja.com

"\ n"とEnvironment.NewLineの違い

(.Netに関して)もしあれば、両者の違いは何ですか?

186
Prerak K

プラットフォームに依存します。 Windowsでは、実際には "\ r\n"です。

MSDNから:

UNIX以外のプラットフォームの場合は "\ r\n"を含む文字列、UNIXプラットフォームの場合は "\ n"を含む文字列。

185
anthony

ソースコードからの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内)

141
aloisdg

他の人が言ったように、Environment.NewLineは改行を始めるためのプラットフォーム固有の文字列を返します。

  • Windowsの場合は"\r\n"(\ u000D\u000A)
  • Unixの場合は"\n"(\ u000A)
  • Mac用の"\r"(\ u000D)(そのような実装が存在する場合)

コンソールに書き込むときは、Environment.NewLineは必ずしも必要ではありません。必要ならば、コンソールストリームは"\n"を適切な改行シーケンスに変換します。

67
P Daddy

Environment.NewLineは、コードが実行されている対応するプラットフォームの改行文字を返します。

Mono フレームワークのlinuxでコードをデプロイするときに、これは非常に便利です。

22
Rony

のドキュメントから ...

UNIX以外のプラットフォームの場合は "\ r\n"を含む文字列、UNIXプラットフォームの場合は "\ n"を含む文字列。

8
JP Alioto

複数行のメッセージを "\ r\n"で区切って表示しようとすると、問題が発生する可能性があります。

標準的な方法で物事を行い、Environment.NewLineを使用することは常に良い習慣です。

4
Yahya

Windowsでは、Environment.NewLineは "\ r\n"と表示します。あなたがUnixベースの環境のために文字列を生成しているなら、あなたは "\ r"が欲しくありません。

4