ВУЗ:
Составители:
Рубрика:
15
1.2.2. Классы Debug и Trace
Атрибут условной компиляции Conditional характеризует метод, но не от-
дельный оператор. Иногда хотелось бы иметь условный оператор печати, не
создавая специального метода, как это было сделано в предыдущем примере.
Такую возможность и многие другие полезные свойства предоставляют классы
Debug и Trace.
Классы Debug и Trace – это классы-двойники. Оба они находятся в про-
странстве имен Diagnostics, имеют идентичный набор статических свойств и
методов с идентичной семантикой. В чем же разница? Методы класса Debug
имеют атрибут условной компиляции с константой DEBUG, действуют только
в Debug-конфигурации проекта и игнорируются в Release-конфигурации. Ме-
тоды класса Trace включают два атрибута Conditional с константами DEBUG и
TRACE и действуют в обеих конфигурациях.
Одна из основных групп методов этих классов – методы печати данных:
Write, WriteIf, WriteLine, WriteLineIf. Методы перегружены, в простейшем случае
позволяют выводить некоторое сообщение. Методы со словом If могут сделать
печать условной, задавая условие печати в качестве первого аргумента метода,
что иногда крайне полезно. Методы со словом Line дают возможность допол-
нять сообщение символом перехода на новую строку.
По умолчанию методы обоих классов направляют вывод в окно Output.
Однако это не всегда целесообразно, особенно для Release-конфигурации. За-
мечательным свойством методов классов Debug и Trace является то, что они мо-
гут иметь много «слушателей», направляя вывод каждому из них. Свойство
Listeners этих классов возвращает разделяемую обоими классами коллекцию
слушателей – TraceListenerCollection. Как и всякая коллекция, она имеет ряд ме-
тодов для добавления новых слушателей: Add, AddRange, Insert – и возможность
удаления слушателей: Clear, Remove, RemoveAt и другие методы. Объекты этой
коллекции в качестве предка имеют абстрактный класс TraceListener.
Библиотека NFCL включает три неабстрактных потомка этого класса:
DefaultTraceListener – слушатель этого класса добавляется в коллекцию по
умолчанию, направляет вывод, поступающий при вызове методов классов
Debug и Trace, в окно Output;
EventLogTraceListener – посылает сообщения в журнал событий Windows;
TextWriterTraceListener – направляет сообщения объектам класса TextWriter или
Stream; обычно один из объектов этого класса направляет вывод на консоль,
другой – в файл.
Можно и самому создать потомка абстрактного класса, предложив, на-
пример, XML-слушателя, направляющего вывод в соответствующий XML-
документ. Как видите, система управления выводом очень гибкая, позволяю-
щая получать и сохранять информацию о ходе вычислений в самых разных
местах.
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »