[C#] “\ n”과 Environment.NewLine의 차이점

.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" Windows 용 (\ u000D \ u000A)
  • "\n" 유닉스 용 (\ u000A)
  • "\r" Mac 용 (\ u000D) (구현 된 경우)

콘솔에 쓸 때 Environment.NewLine이 반드시 필요한 것은 아닙니다. "\n"필요한 경우 콘솔 스트림은 적절한 개행 순서로 변환 됩니다.


답변

Environment.NewLine 코드가 실행되는 해당 플랫폼의 개행 문자를 반환합니다

Mono 프레임 워크 에서 리눅스로 코드를 배포 할 때 매우 유용합니다.


답변

로부터 문서

Unix 이외의 플랫폼의 경우 “\ r \ n”이 포함 된 문자열 또는 Unix 플랫폼의 경우 “\ n”이 포함 된 문자열.


답변

Environment.NewLine은 Windows에서 실행될 때 “\ r \ n”을 제공합니다. Unix 기반 환경을위한 문자열을 생성하는 경우 “\ r”을 원하지 않습니다.


답변

“\ r \ n”으로 구분 된 여러 줄 메시지를 표시하려고하면 문제가 발생할 수 있습니다.

항상 표준 방식으로 작업을 수행하고 Environment를 사용하는 것이 좋습니다.