Was ist der Unterschied zwischen vs ?Console
.WriteLine()
Debug
.WriteLine()
90
Console.WriteLine schreibt entweder beim Debuggen oder beim Release in den Standardausgabestream. Debug.WriteLine schreibt in die Trace-Listener in der Listeners- Auflistung, jedoch nur, wenn sie im Debug ausgeführt werden. Wenn die Anwendung in der Release-Konfiguration kompiliert wird, werden die Debug-Elemente nicht in den Code kompiliert.
Beim Debug.WriteLine
Schreiben an alle Trace-Listener in der Listeners- Auflistung ist es möglich, dass dies an mehreren Stellen ausgegeben wird (Visual Studio-Ausgabefenster, Konsole, Protokolldatei, Drittanbieteranwendung, die einen Listener registriert (ich glaube, DebugView tut dies) ), etc.).
OutputDebugString
(undDebugPrint
) protokolliert wurden . DasDefaultTraceListener
schreibt anOutputDebugString
, weshalb DebugView die Ausgabe sieht. msdn.microsoft.com/en-us/library/…Console.WriteLine()
ist für Programme im Konsolenmodus gedacht. Eine nette Funktion des Visual Studio-Hosting-Prozesses lässt die Ausgabe im Visual Studio-Ausgabefenster angezeigt werden, während für Prozesse ohne Konsole debuggt wird. Dies ist beim Debuggen sehr nützlich. Beachten Sie jedoch, dass Sie diesen Code entfernen (oder mit einem #ifdef DEBUG umschließen) sollten, wenn Sie bereit sind, den Release-Build zu erstellen. Andernfalls wird Ihrem Programm unnötiger Overhead hinzugefügt. Dies macht es für die Debug-Ablaufverfolgung weniger als ideal.Debug.WriteLine()
generiert Ablaufverfolgungsinformationen, wenn Sie mit der DEBUG-Bedingung #defined erstellen. Welches ist standardmäßig im Debug-Build aktiviert. Wo die Ausgabe endet, kann in der Datei app.exe.config konfiguriert werden. Wenn diese Konfiguration nicht überschrieben wird, stellt .NET automatisch eine Instanz der DefaultTraceListener-Klasse bereit. Es sendet den Debug.WriteLine () -Text mit der Windows OutputDebugString () -API-Funktion an den Debugger. Der Visual Studio-Debugger zeigt an, dass dies genau wie Console.WriteLine () im Ausgabefenster angezeigt wird.Ein klarer Vorteil von Debug.WriteLine () ist, dass im Release-Build kein Overhead generiert wird und die Aufrufe effektiv entfernt werden. Die zusammengesetzte Formatierung wird jedoch nicht unterstützt. Dazu benötigen Sie String.Format (). Für die Debug-Ablaufverfolgung sollte die Debug-Klasse Ihre Wahl sein.
quelle
Wenn Sie Console.WriteLine ausschließlich zum Debuggen verwenden, verwenden Sie besser Debug.WriteLine .
Wenn Sie Ihrem Benutzer eine Nachricht anzeigen möchten, verwenden Sie Console.WriteLine .
Debug.WriteLine dient nur zum Debuggen Ihrer Anwendung. Im Release-Modus werden Ihre Debug-Anweisungen ignoriert.
Eine andere Verwendung einer Konsolenanwendung ist das Testen privater Assemblys. Anstelle des herkömmlichen Ansatzes, eine Art GUI-Testkabel zum Testen der kompilierten Version der DLL zu erstellen, können Sie die DLL einfach als Konsolenanwendung neu erstellen und von / in die Konsole eingeben / ausgeben. Ich habe festgestellt, dass diese Technik schneller ist als das Erstellen eines GUI-Testgeschirrs.
quelle