“\ n”과 Environment.NewLine의 차이점


답변:


203

플랫폼에 따라 다릅니다. Windows에서는 실제로 "\ r \ n"입니다.

MSDN에서 :

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


5
Microsoft에 .NET을 실행하는 UNIX 플랫폼은 무엇입니까? (모노의 일부를 의미합니다.)
Jack

10
@Jack Unix 플랫폼에서 열리는 파일에 쓸 수 있습니다. 또는 유닉스 플랫폼에 의해 수신 될 텍스트를 패키지로 보내는 것. 그리고 몇 달 안에 .net은 유닉스 플랫폼에서 실행될 것입니다. 그것은 이미 시작했다
John Demetriou

그러니 그냥 선명도 : 비 유닉스 플랫폼에 Environment.NewLine있다 \r\n하지만, \n또한 "새로운 라인"라고합니다. 왜 그들은 잘 알려진 이름 인 "줄 바꿈"으로 후자를 부르지 않고 혼란을 없애지 않았습니까? 그들은 \l또한 사용할 수있었습니다 .
rory.ap

157

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)


10
그래 :) 어떤 이유로 나는 .NET 구현이 매우 복잡한 함수가 될 것으로 기대했다
developerbmw

이 경우 소스의 단순성을 고려하면 아마도 대답이되어야합니다.
Chris Walter

70

다른 사람들이 언급했듯이 Environment.NewLine새 줄을 시작하기위한 플랫폼 별 문자열을 반환합니다.

  • "\r\n" Windows 용 (\ u000D \ u000A)
  • "\n" 유닉스 용 (\ u000A)
  • "\r" Mac 용 (\ u000D) (구현 된 경우)

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


Mac 구현이 존재합니다. 그냥 모노. 무엇이든 실행됩니다.
Dykam

24
참고로, 그것은 오래된 맥일 것입니다. 새로운 (OSX) 맥 사용\n
BlueRaja-대니 Pflughoeft

2
@Dykam는, 그래 그러나 그것은 아주 천천히 같은 내 HP48gx에 실행
cod3monk3y

1
다른 사람들이 언급하고 .Net 소스에서 볼 수 있듯이이 질문에 첨부 된이 대답은 정확하지 않습니다.
Chris Walter

2
@Blieque는 2009 년에 사실이 아니라 사실 일 수도 있다고 말합니다. 나는 확인하지 않았다.
aloisdg codidact.com으로 이동

23

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

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


8

로부터 문서 ...

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


4

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


4

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.