В чем разница между vs ?Console
.WriteLine()
Debug
.WriteLine()
93
Console.WriteLine записывает в стандартный поток вывода либо при отладке, либо при выпуске. Debug.WriteLine записывает в прослушиватели трассировки в коллекции Listeners , но только при выполнении отладки. Когда приложение компилируется в конфигурации выпуска, элементы Debug не компилируются в код.
Поскольку Debug.WriteLine
запись выполняется во все прослушиватели трассировки в коллекции Listeners , возможно, что это может быть выведено более чем в одном месте (окно вывода Visual Studio, консоль, файл журнала, стороннее приложение, которое регистрирует прослушиватель (я считаю, что DebugView делает это ), так далее.).
OutputDebugString
(иDebugPrint
).DefaultTraceListener
ПишетOutputDebugString
, поэтому DebugView видит выход. msdn.microsoft.com/en-us/library/…Console.WriteLine()
предназначен для программ консольного режима. Хорошая особенность процесса размещения Visual Studio - вывод его вывода в окне вывода Visual Studio во время отладки для процессов, у которых нет консоли. Это очень полезно при отладке, но помните, что вам следует удалить этот код (или обернуть его #ifdef DEBUG), когда вы будете готовы создать сборку Release. В противном случае это добавит ненужных накладных расходов вашей программе. Это делает его менее идеальным для трассировки отладки.Debug.WriteLine()
генерирует информацию трассировки, если вы выполняете сборку с условным условием DEBUG #defined. Что по умолчанию включено в сборке отладки. Где заканчивается вывод, можно настроить в файле app.exe.config. Если эта конфигурация не переопределена, .NET автоматически предоставляет экземпляр класса DefaultTraceListener. Он отправляет текст Debug.WriteLine () с функцией API Windows OutputDebugString () в отладчик. Отладчик Visual Studio отображает это в окне вывода, как Console.WriteLine ().Явным преимуществом Debug.WriteLine () является то, что он не создает накладных расходов в сборке Release, вызовы эффективно удаляются. Однако он не поддерживает составное форматирование, для этого вам понадобится String.Format (). Для трассировки отладки вы должны выбрать класс Debug.
источник
Если вы используете Console.WriteLine исключительно для отладки, вам лучше использовать Debug.WriteLine .
Если вы хотите показать сообщение своему пользователю (в консольном приложении), вы должны использовать Console.WriteLine .
Debug.WriteLine предназначен только для отладки вашего приложения. В режиме выпуска ваши отладочные операторы будут проигнорированы.
Другое использование консольного приложения - тестирование частных сборок. Вместо традиционного подхода к созданию своего рода тестового набора GUI для тестирования скомпилированной версии DLL вы можете просто перестроить DLL как консольное приложение и вводить / выводить с / на консоль. Я обнаружил, что этот метод работает быстрее, чем тратить время на создание тестовой среды GUI.
источник