Qual è la differenza tra Console
.WriteLine()
vs Debug
.WriteLine()
?Qual è la differenza tra Console.WriteLine() vs Debug.WriteLine()?
risposta
Console.WriteLine scrive nel flusso di output standard, sia in debug che in release. Debug.WriteLine scrive nei listener di traccia nella raccolta Listeners, ma solo quando è in esecuzione in debug. Quando l'applicazione è compilata nella configurazione di rilascio, gli elementi di Debug non verranno compilati nel codice.
Come Debug.WriteLine
scrive a tutti gli ascoltatori di traccia della collezione Listeners, è possibile che questo potrebbe essere uscita in più di un luogo (finestra di output di Visual Studio, Console, File di log, applicazioni di terze parti che registra un ascoltatore (Credo che DebugView faccia questo), ecc.).
Console.WriteLine()
è destinato ai programmi in modalità console. Una buona funzionalità del processo di hosting di Visual Studio rende il suo output visualizzato nella finestra di output di Visual Studio mentre esegue il debug per i processi che non dispongono di una console. È molto utile durante il debug ma fai attenzione che dovresti rimuovere questo codice (o avvolgerlo con uno #ifdef DEBUG
) quando sei pronto per creare la build di Release. Aggiungerà altrimenti inutili spese generali al tuo programma. Questo lo rende meno che ideale per il tracciamento del debug.
Debug.WriteLine()
genera informazioni di traccia se si crea con il valore condizionale # DEBUG
# definito. Che è attivo per impostazione predefinita nel build Debug. Dove finisce l'uscita può essere configurato nel file app.exe.config
. Se questa configurazione non viene sovrascritta, .NET fornisce automaticamente un'istanza della classe DefaultTraceListener
. Invia il testo Debug.WriteLine()
con la funzione API di Windows OutputDebugString()
al debugger. Il debugger di Visual Studio lo fa apparire nella finestra Output, proprio come Console.WriteLine()
.
Un chiaro vantaggio di Debug.WriteLine()
è che non genera un sovraccarico nella build di rilascio, le chiamate vengono effettivamente rimosse. Tuttavia, non supporta la formattazione composita, per questo è necessario lo String.Format()
. Per la traccia di debug, la classe Debug dovrebbe essere la tua scelta.
Se lo scopo di utilizzare Console.WriteLine è esclusivamente per il debug, è meglio utilizzare Debug.WriteLine.
Se si desidera visualizzare un messaggio per l'utente, si utilizzerà Console.WriteLine.
Debug.WriteLine ha il solo scopo di eseguire il debug dell'applicazione. In la modalità di rilascio le tue istruzioni di debug saranno ignorate.
Un altro utilizzo di un'applicazione console è la verifica di assiemi privati. Piuttosto che l'approccio tradizionale di creare una sorta di interfaccia di test della GUI per testare la versione compilata della DLL, è possibile semplicemente ricostruire la DLL come applicazione di console e input/output da/alla console. Ho trovato questa tecnica per essere più veloce di passare il tempo a creare un cablaggio di test GUI.
"Se vuoi mostrare un messaggio al tuo utente, dovresti usare console.writeline."Questo potrebbe confondere alcune persone perché mostrerà qualcosa all'utente se esegue in un'applicazione console. –
- 1. log4net Registrazione di Debug.WriteLine e Console.WriteLine
- 2. Qual è la differenza tra colorWithSRGBRed vs colorWithDeviceRed vs colorWithCalibratedRed
- 3. Qual è la differenza tra {0} e +?
- 4. Database vs tablespace, qual è la differenza?
- 5. Shim vs. Sham: Qual è la differenza?
- 6. EQU vs DC.B. Qual è la differenza?
- 7. Permetti vs Stub, qual è la differenza?
- 8. Qual è la differenza tra Cassandra vs Oracle Coherence?
- 9. qual è la vera differenza tra lemmatization vs stemming
- 10. Qual è la differenza tra npm 3 vs Bower?
- 11. underscorejs: qual è la differenza tra extendOwn vs extend?
- 12. qual è la differenza tra ResultSetExtractor vs Rowmapper?
- 13. Qual è la differenza tra process.cwd() vs __dirname?
- 14. Qual è la differenza tra `while (true)` vs `while (\ true)`?
- 15. Qual è la differenza tra process.cwd() vs process.env.PWD?
- 16. In MsBuild, qual è la differenza tra CreateProperty vs PropertyGroup?
- 17. Qual è la differenza tra Template.Instance() vs template.data?
- 18. Qual è la differenza tra Function Pointer vs Function Call?
- 19. Qual è la differenza tra essere db_owner vs db_datareader/db_datawriter?
- 20. Qual è la differenza tra FreeGLUT vs GLFW?
- 21. Qual è la differenza tra String (valore) vs value.toString()
- 22. Qual è la differenza tra * .d.ts vs * .ts in dattiloscritto?
- 23. Qual è la differenza tra NSDictionary vs Dictionary in Swift?
- 24. $ dirty vs $ invalid: Qual è la differenza?
- 25. node.js vs. mete.js qual è la differenza?
- 26. mb_strpos vs strpos, qual è la differenza?
- 27. javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie, Qual è la differenza?
- 28. Qual è la differenza tra string e StringBuilder?
- 29. Qual è la differenza tra Task.Run() e Task.Factory.StartNew()
- 30. Qual è la differenza tra = e: =
Strictly DebugView monitora i messaggi registrati tramite la chiamata API di Windows nativa 'OutputDebugString' (e' DebugPrint'). Il 'DefaultTraceListener' scrive su' OutputDebugString', che è il motivo per cui DebugView vede l'output. http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx – MarkJ