Console.WriteLine()
est destiné aux programmes en mode console. Une fonctionnalité intéressante du processus d'hébergement de Visual Studio fait apparaître sa sortie dans la fenêtre Visual Studio Output pendant le débogage pour les processus qui n'ont pas de console. C'est très utile pour le débogage mais attention, vous devez supprimer ce code (ou l'entourer d'un #ifdef DEBUG) lorsque vous êtes prêt à créer la version Release. Sinon, il ajoutera des frais inutiles à votre programme. Il est donc loin d'être idéal pour le suivi du débogage.
Debug.WriteLine()
génère des informations de traçage si vous construisez avec la conditionnelle DEBUG #définie. Cette condition est activée par défaut dans la version Debug. La destination de la sortie peut être configurée dans le fichier app.exe.config. Si cette configuration n'est pas surchargée, .NET fournit automatiquement une instance de la classe DefaultTraceListener. Elle envoie le texte Debug.WriteLine() avec la fonction API Windows OutputDebugString() au débogueur. Le débogueur Visual Studio fait apparaître ce texte dans la fenêtre de sortie, tout comme Console.WriteLine().
L'avantage de Debug.WriteLine() est qu'il ne génère aucune surcharge dans la version Release, les appels sont effectivement supprimés. Cependant, elle ne prend pas en charge le formatage composite. Pour cela, vous aurez besoin de String.Format(). Pour le suivi du débogage, la classe Debug devrait être votre choix.