Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 81 стр.

UptoLike

Составители: 

81
Следует отметить, что существуют некоторые ограничения на
описание преобразований типов:
Нельзя задать преобразование типов, если один класс является
производным от другого класса (компилятор уже знает, как вы-
полнять преобразования между наследуемыми классами).
Преобразование должно быть описано только в одном из классов
(в исходном или результирующем типе).
На рис. 4.1 в качестве примера показана схема наследования классов
A,B,C,D. В данном случае возможными являются только преобразова-
ния между классами C и D, так как они не связаны отношением насле-
дования. Описание таких преобразований будет выглядеть следующим
образом (если задавать явное преобразования, что является обычным
для пользовательских классов):
public static explicit operator D(C value)
{
//описание преобразования класса C в класс D
}
public static explicit operator C(D value)
{
//описание преобразования класса D в класс C
}
Такие преобразования можно поместить или в класс C или в класс
D, но не в каждый из них.
4.10. События класса
Прежде чем рассматривать понятие и описание событий класса
нужно рассмотреть еще один пользовательский тип делегаты (dele-
gate), с использованием которых и выполняется описание событий.
4.10.1. Делегаты
Делегаты это тоже пользовательские типы данных, которые могут
хранить ссылки на методы. В описании делегата задается сигнатура ме-
тодов (возвращаемое значение и типы параметров), ссылки на которые
можно сохранить в экземпляре делегата данного типа. В экземпляре де-
легата может быть сохранена ссылка на все методы классов, сигнатура
которых совпадает с сигнатурой делегата.
Объявление нового пользовательского типа делегата имеет сле-
дующий вид:
[<режим_доступа>] delegate <тип_результата >
<имя_класса> (<список_параметров>);