|
Программирование >> Программирование с использованием ajax
В этом окне содержится раскрывающееся меню, из которого можно выбирать разные режимы, такие как Build (Сборка) и Debug (Отладка). В этих режимах отображается информация, касающаяся, соответственно, только компиляции или только выполнения кода. Под выполнением вывода в окно Output в настоящем разделе подразумевается вывод в представление режима Debug окна Output . В качестве альтернативы можно создавать журнальный файл и делать так, чтобы при выполнении приложения в нем фиксировалась вся важная информация. Приемы для обеспечения такого поведения выглядят во многом так же, как и приемы записи в окно Output, но требуют понимания способов получения доступа к файловой системе из С#-приложений. Поэтому мы пока отложим рассмотрение этой темы, поскольку много чего можно делать и без погружения в премудрости технологий доступа к файлам. Вывод отладочной информации Вывод текста в окно Output во время выполнения очень прост. Вместо вызовов Console. WriteLine () нужно использовать вызовы таких команд, которые позволяют выводить текст в желаемое место: а Debug.WriteLineо а Trace.WriteLine() Эти команды функционируют практически одинаково с одним важным отличием: первая работает только в отладочных сборках, а вторая - и в рабочих сборках тоже. На самом деле команда Debug .WriteLine () не будет даже компилироваться в рабочую сборку; она будет просто исчезать, что, несомненно, имеет свои преимущества (в скомпилированном коде будет на одну команду меньше). В сущности, из одного исходного файла можно создавать две версии приложения. В отладочной версии будут отображаться всевозможные дополнительные диагностические сведения, а в рабочей этих накладных расходов не будет, и пользователям не будут отображаться сообщения, которые в противном случае могли бы их раздражать. Эти функции работают не совсем так, как Console .WriteLine (). Они принимают только один строковый параметр для выводимого сообщения, а не позволяют вставлять значения переменных с помощью синтаксиса {X}. Это означает, что для вставки значений переменных в строки должен применяться альтернативный прием - например, операция конкатенации +. Еще (при желании) можно предоставлять второй строковый параметр, отвечающий за отображение категории, к которой относится выводимый текст. Такой подход позволяет сразу же видеть, какие выходные сообщения отображаются в окне Output, что может оказаться удобным в случае вывода похожих сообщений из разных мест приложения. В общем, вывод этих функций выглядит следующим образом: <категория>: < сообщение> Например, приведенный ниже оператор, в котором My Fun с выступает в роли необязательного параметра, представляющего категорию: Debug.WriteLine( Добавление 1 к i , MyFunc ); привел бы к получению такого вывода: MyFunc: Добавление 1 к i В следующем практическом занятии демонстрируется пример вывода отладочной информации, как было описано выше. 1рактическое зЗЯтЯ? ВывОД ТекСТЭ В ОКНО Output 1. Создайте новое консольное приложение по имени Ch07Ex01 и сохраните его в каталоге С: \BegVCSharp\Chapter07. 2. Измените его код следующим образом: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace Ch07Ex01 { class Program { static void Main(string[] args) { int[] testArray= {4, 7, 4, 2, 7, 3, 7, 8, 3, 9, 1, 9); int[] maxVal Indices; int maxVal = Maxima (testArray, out maxVallndices) ; Console.WriteLine ( Maximum value {0} found at element indices: , Вывод максимального значения и его индексов maxVal); foreach (int index in maxVallndices) { Console.WriteLine(index); Console.ReadKey 0; static int Maxima (int [] integers, out int[l indices) { Debug. WriteLine ( Maximum value search started. ) ; Начало поиска максимального значения indices = new int[l]; int maxVal = integers [0]; indices[0] = 0; int count = 1; Debug.WriteLine(string.Format( Maximum value initialized to {0} , at element index 0. , maxVal)) ; Инициализация максимального значения элементом с индексом О for (int i = 1; i < integers. Length; i++) { Debug.WriteLine(string.Format( Now looking at element at index {0} . , i)) ; Просмотр очередного элемента if (integers [i] > maxVal) { maxVal = integers[i]; count = 1; indices = new int[l]; indices[0] = i; Debug.Wri teLine(s tring.Format( New maximum found. New value is {0}, at element index {1}. , Найдено новое максимальное значение maxVal, i)) ; else { if (integers [i] = maxVal) count++; int[] oldlndices = indices; indices = new int[count]; oldlndices.CopyTo(indices, 0) ; indices [count - 1] = i; Debug.WriteLine (string. Format ( Duplicate maximum found at element index {0}. , i)) ; Найден дубликат максимального значения Trace.WriteLine(string.Format( Maximinn value {0} found, with {1} occurrences. , maxVal, count)); Вывод максимального значения и количества его вхождении Debug.WriteLine ( Maximum value search coileted. ) ; Поиск максимального значения завершен return maxVal; 3. Запустите приложение в режиме отладки. На рис. 7.2 показан результат, который должен получиться. Рис. 7.2. Приложение ChOVExOl в действии 4. Завершите работу этого приложения и проверьте содержимое окна Output (Вывод) в режиме Debug (Отладка). Ниже приведена усеченная версия вывода: Maximum value search started. Maximum value initialized to 4, at element index 0. Now looking at element at index 1. New maximum found. New value is 7, at element index 1. Now looking at element at index 2. Now looking at element at index 3. Now looking at element at index 4. Duplicate maximum found at element index 4. Now looking at element at index 5. Now looking at element at index 6. Duplicate maximum found at element index 6. Now looking at element at index 7. New maximum found. New value is 8, at element index 7. Now looking at element at index 8. Now looking at element at index 9. New maximum found. New value is 9, at element index 9. Now looking at element at index 10. Now looking at element at index 11.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |