- •Программирование на c#
- •Cанкт-Петербург
- •Лабораторная работа 1: Создание простой c#-программы Упражнение 1: Создание простой c#-программы
- •Упражнение 2: Компиляция и запуск c#-программы из командной строки
- •Упражнение 3: Использование отладчика Visual Studio .Net
- •Упражнение 4: Добавление в c#-программу обработчика исключительных ситуаций
- •Лабораторная работа 2: Создание и использование размерных типов данных Упражнение 1. Создание перечисления.
- •Упражнение 2. Создание и использование структуры
- •Упражнение 3. Добавление возможности ввода/вывода
- •Лабораторная работа 3.1: Использование выражений Упражнение 1. Преобразование дня года в дату типа месяц- день
- •Лабораторная работа 3.2: Использование исключений Упражнение 1. Проверка вводимого пользователем значения дня года
- •Упражнение 2. Учет високосных годов
- •Лабораторная работа 4: Создание и использование методов Упражнение 1. Использование параметров в методах, возвращающих значения
- •Упражнение 2. Использование в методах параметров, передаваемых по ссылке
- •Упражнение 3. Использование возвращаемых параметров в методах
- •Лабораторная работа 5: Создание и использование массивов Упражнение 1. Работа с массивами размерных типов.
- •Упражнение 2. Перемножение матриц
- •Лабораторная работа 6: Создание и использование классов Упражнение 1. Создание и использование класса
- •Упражнение 2. Генерация номеров банковских счетов
- •Упражнение 3. Добавление дополнительных public методов
- •Лабораторная работа 7.1: Создание и использование ссылочных переменных
- •Упражнение 2. Обращение строки
- •Упражнение 3. Создание прописной версии текста файла.
- •Лабораторная работа 7.2: Приведение типов Упражнение 1. Проверка наличия реализации интерфейса.
- •Упражнение 2. Работа с интерфейсами.
- •Лабораторная работа 8.1: Создание объектов Упражнение 1. Разработка конструкторов.
- •Упражнение 2. Инициализация данных только для чтения.
- •Лабораторная работа 8.2: Управление ресурсами Упражнение 1. Использование шаблона для удаления объектов
- •Лабораторная работа 9: Использование наследования при реализации интерфейсов Упражнение 1. Преобразование исходного файла на c# в файл html
- •Упражнение 2. Преобразование исходного файла на c# в файл html
- •Лабораторная работа 10.1: Использование модификатора доступа internal Упражнение 1. Создание банка.
- •Лабораторная работа 10.2: Создание пространств имен и сборок Упражнение 1. Организация классов
- •Лабораторная работа 11.1: Перегрузка операторов Упражнение 1 Перегрузка операторов для класса BankAccount.
- •Лабораторная работа 11.2: Определение и использование событий Упражнение 1. Ревизия банковских транзакций.
- •Лабораторная работа 12: Использование свойств и индексаторов Упражнение 1. Изменение класса BankAccount.
- •Упражнение 2. Изменение класса BankTransaction.
- •Упражнение 3. Создание и использование индексатора.
- •Лабораторная работа 13: Создание и использование атрибутов Упражнение 1. Использование атрибута Conditional
- •Упражнение 2. Создание и использование пользовательского атрибута
- •Литература
- •Приложение
- •Шаблон реализации iDisposable.
Лабораторная работа 13: Создание и использование атрибутов Упражнение 1. Использование атрибута Conditional
В этом упражнении Вы поработаете со встроенным атрибутом Conditional, который применяется для условного выполнения Вашего кода.
Этот атрибут может быть полезен при отладке Ваших программ, когда Вы имеете ряд процедур, выдающих отладочную информацию. После отладки программы при компиляции release-версии вызовы ваших отладочных процедур не создаются, хотя сами процедуры компилируются.
В этом задании в класс BankAccount Вы добавите метод DumpToSreen. Этот метод будет отражать информацию о банковском счете. Вы воспользуетесь атрибутом Conditional для выполнения метода в зависимости от значения параметра DEBUG_ACCOUNT.
Примените атрибут Conditional
Откройте проект Bank.sln из папки install folder\Labs\Lab14\Starter\Bank.
В класс BankAccount добавьте public void метод DumpToScreen без параметров.
Метод должен отображать содержимое банковского счета: номер счета, его владельца, тип и баланс. Следующий код показывает пример создания такого метода:
public void DumpToScreen( )
{
Console.WriteLine("Debugging account {0}. Holder is {1}. Type is {2}. Balance is {3}",
this.accNo, this.holder, this.accType, this.accBal);
}
Используйте этот метод в зависимости от значения символа DEBUG_ACCOUNT.
Перед методом добавьте следующий атрибут Conditional:
[Conditional("DEBUG_ACCOUNT")]
Добавьте директиву using для пространства имен System.Diagnostics.
Откомпилируйте проект и исправьте ошибки, если это необходимо.
Протестируйте атрибут Conditional
Откройте проект TestHarness.sln из папки install folder\Labs\Lab14\Starter\TestHarness.
Создайте ссылку на библиотеку Bank.
Разверните проект TestHarness в окне Solution Explorer.
ПКМ ReferencesAdd Reference.
Нажмите на кнопку Browse и перейдите в папку install folder\Labs\Lab14\Starter\Bank\bin\debug.
Выделите Bank.dll, а затем нажмите на кнопку Open.
Нажмите OK.
Просмотрите метод Main класса CreateAccount. Обратите внимание на то, что в нем создается новый банковский счет.
В метод Main добавьте следующую строку кода для вызова метода DumpToScreen для myAccount:
myAccount.DumpToScreen( );
Сохраните проект, откомпилируйте проект и исправьте ошибки, если это необходимо.
Запустите тестовый проект.
Обратите внимание на то, что ничего не происходит, т.к. метод DumpToScreen не был вызван.
Из командной строки запустите утилиту ILDASM для исследования install folder\Labs\Lab14\Starter\Bank\bin\debug\Bank.dll.
Вы увидите, что метод DumpToScreen присутствует в классе BankAccount.
Дважды щелкните по DumpToScreen для просмотра MSIL-кода
Вы увидите в начале метода атрибут ConditionalAttribute. Значит ошибка в тестовом приложении. Т.к. для метода DumpToScreen определен атрибут ConditionalAttribute, среда выполнения проигнорирует вызов этого метода, если при компиляции не определен символ DEBUG_ACCOUNT. Вызов метода происходит, но т.к. DEBUG_ACCOUNT не определен, среда выполнения тут же завершает его работу.
Закройте ILDASM.
Вернитесь в тестовое приложение. В файле CreateAccount.cs перед первой директивой using добавьте следующий код, определяющий символ DEBUG_ACCOUNT:
#define DEBUG_ACCOUNT
Сохраните и откомпилируйте тестовое приложение. Исправьте ошибки, если это необходимо.
Запустите тестовое приложение.
Обратите внимание на то, что метод DumpToScreen вывел информацию о счете myAccount.
