대의 차이점은 무엇입니까 ?Console
.WriteLine()
Debug
.WriteLine()
답변
Console.WriteLine 은 디버그 또는 릴리스에서 표준 출력 스트림에 씁니다. Debug.WriteLine 은 Listeners 컬렉션 의 추적 수신기에 기록 하지만 디버그에서 실행할 때만 기록합니다 . 응용 프로그램이 릴리스 구성에서 컴파일 될 때 Debug 요소는 코드로 컴파일되지 않습니다.
으로 Debug.WriteLine
의 모든 추적 수신기에 쓰기 청취자의 수집, 그것은이 이상 한 장소에서 출력 할 수있다 (Visual Studio를 출력 창, 콘솔, 로그 파일, 타사 응용 프로그램이 리스너를 등록하는 (나는 생각 DebugView와는 이 작업을 수행 ) 등).
답변
Console.WriteLine()
콘솔 모드 프로그램을 의미합니다. Visual Studio 호스팅 프로세스의 멋진 기능은 콘솔이없는 프로세스를 디버깅하는 동안 Visual Studio 출력 창에 출력이 표시되도록합니다. 이는 디버깅하는 동안 매우 유용하지만 릴리스 빌드를 만들 준비가되면이 코드를 제거 (또는 #ifdef DEBUG로 래핑)해야합니다. 그렇지 않으면 프로그램에 불필요한 오버 헤드가 추가됩니다. 이로 인해 디버그 추적에 적합하지 않습니다.
Debug.WriteLine()
DEBUG 조건부 #defined로 빌드하는 경우 추적 정보를 생성합니다. 디버그 빌드에서 기본적으로 켜져 있습니다. 출력이 끝나는 위치는 app.exe.config 파일에서 구성 할 수 있습니다. 이 구성이 재정의되지 않은 경우 .NET은 DefaultTraceListener 클래스의 인스턴스를 자동으로 제공합니다. Windows OutputDebugString () API 함수와 함께 Debug.WriteLine () 텍스트를 디버거로 보냅니다. Visual Studio 디버거는 Console.WriteLine ()과 마찬가지로 출력 창에 표시됩니다.
Debug.WriteLine ()의 분명한 장점은 Release 빌드에서 오버 헤드를 생성하지 않고 호출이 효과적으로 제거된다는 것입니다. 그러나 복합 서식을 지원하지 않으므로 String.Format ()이 필요합니다. 디버그 추적의 경우 Debug 클래스를 선택해야합니다.
답변
Console.WriteLine 사용 목적이 디버깅 전용 인 경우 Debug.WriteLine을 사용하는 것이 좋습니다 .
사용자에게 메시지를 표시하려면 (콘솔 애플리케이션에서) Console.WriteLine 을 사용 합니다.
Debug.WriteLine은 애플리케이션 디버깅 목적으로 만 사용됩니다. 릴리스 모드에서는 디버그 문이 무시됩니다.
콘솔 응용 프로그램의 또 다른 용도는 개인 어셈블리를 테스트하는 것입니다. DLL의 컴파일 된 버전을 테스트하기 위해 일종의 GUI 테스트 도구를 만드는 전통적인 접근 방식 대신 DLL을 콘솔 응용 프로그램으로 다시 빌드하고 콘솔에서 / 로의 입출력을 수행 할 수 있습니다. 이 기술이 GUI 테스트 도구를 만드는 데 시간을 보내는 것보다 빠르다는 것을 알았습니다.