Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы C#.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
609 Кб
Скачать
☆

Основы c#. Урок 34. Пример класса с событием

На этом уроке мы расмотрим еще один пример класса с событием. Класс наш будет представлять из себя игральную кость, в классе будет единственный метод rnd, возвращающий случайное число от 1 до 6. Если этот метод возвратит 6, то сгенерируется событие max.

namespace test

{

//Объявление делегата.

public delegate void EventHandler();

//Класс "Игральная кость".

class MyDie

{

Random r;

//Объявление события на основе делегата.

public event EventHandler max;

//Конструктор.

public MyDie()

{

r=new Random();

}

//Объявление метода, в котором вызывается событие.

public int rnd()

{

//Случайное число от 1 до 6.

int res = r.Next(6)+1;

if(res==6)

{

//Вызываем событие.

max();

}

return res;

}

}

//Класс для тестирования события.

class Test

{

//Обработчик для события.

public static void z()

{

Console.WriteLine("Вызов обработчика");

}

//Метод main.

static void Main(string[] args)

{

//Создаем экземпляр события.

MyDie w=new MyDie();

//Добавление обработчика события.

w.max+=new EventHandler(z);

//Вызов метода, в котором вызывается событие.

for(int k=0; k<10; k++)

{

Console.WriteLine("{0}", w.rnd());

}

}

}

}

При запуске нашей программы к классе Test мы создаем новый экземпляр класса MyDie игральной кости, приписываем к событию max класса MyDie обработчик z, и подкидываем кость 10 раз. Если выпадет шестерка, то возникнет событие max и выполнится обработчик для него. Результат выполнения программы может быть, например, таким:

Основы c#. Урок 35. Введение в атрибуты

Сначала несколько слов о том, что такое атрибуты. Итак, атрибут - это некоторая дополнительная информация, которая может быть приписана к типам, полям, методам, свойствам и некоторым другим конструкциям языка. Атрибуты помещаются в исполняемый файл и могут оттуда при необходимости извлекаться.

Все атрибуты (в отличие, скажем, от атрибутов языка IDL) являются классами (потомками класса System.Attribute). В отличие от атрибутов IDL набор атрибутов .NET открыт для дополнения, т. е. вы можете определять собственные атрибуты и применять их к вышеуказанным элементам вашего кода.

Атрибуты делятся на предопределенные (встроенные) и пользовательские (которые пишет программист).

Встроенные атрибуты могут использоваться, например, при сериализации (сохранении в поток) данных класса. Скажем, вам надо, чтобы у класса сохранялись не все данные - в этом случае вы можете пометить те данные, которые не надо сохранять, специальным атрибутом.

Еще пример применения атрибутов. Компоненты, которые вы располагаете на форме (кнопки, метки и т. п.) имеют некоторый набор свойств (шрифт, местоположение, видимость и т. п.). В IDE Visual Studio вы можете выбрать в окне Properties один из двух способов расположения этих свойств - по алфавиту или по категориям. Так вот, в какую категорию попадет то или иное свойство, определяется специальным встроенным атрибутом.

Атрибуты в C# заключаются в квадратные скобки.