Ватсон Карли
Шрифт:
В примере
означает: "добавить этот обработчик к событию". Может быть немного удивительным увидеть оператор, подобный
Операторы, подобные
Приведенное выше утверждение необходимо немного уточнить. Чтобы применять эти операторы к другим типам объектов, необходимо сначала сообщить компилятору, что эти операторы означают для других типов объектов — процесс, называемый перезагрузкой операторов. Он работает примерно следующим образом. Предположим, что необходимо написать класс, который представляет, скажем, математический вектор. В VB это можно закодировать как модуль класса, который позволит написать:
В математике векторы можно складывать, что будет обеспечено с помощью перезагрузки операторов. Но VB6 не поддерживает перезагрузку, поэтому вместо этого в VB6 вероятно придется определить метод Add для Vector, и, таким образом, сделать следующее:
В VB это лучшее, что можно придумать. Однако в C#, если определить класс
Очевидно, что перезагруженные операторы не будут определяться для всех классов. Для большинства классов не будут иметь смысла действия типа сложения или умножения объектов. Однако для классов, для которых это имеет смысл, перезагрузка операторов может сделать код значительно проще для восприятия. Именно это и происходит с событиями. Поскольку имеет смысл говорить о добавлении обработчика к событию, был предоставлен перезагруженный оператор, чтобы позволить делать это, используя интуитивно понятный синтаксис с помощью операторов
Подводя итог
Мы получили максимум возможного из рассмотрения примеров
К этому моменту мы получили представление о синтаксисе C#. Мы видели, что он позволяет писать инструкции, которые значительно короче, чем соответствующий код VB. Мы также заметили, что C# помещает весь код в исходный файл в отличие от VB, где большая часть базового кода скрыта от программиста, что делает код проще за счет уменьшения гибкости при создании приложений. Мы также познакомились с концепцией наследования.
Однако мы пока еще не видели реального примера некоторого кода, который можно написать на C#, но крайне трудно создать код, делающий то же самое на VB. Мы собираемся рассмотреть такой пример в следующем разделе, где будут с помощью некоторых классов проиллюстрированы возможности наследования.
Пример: Employees и Managers
Для этого примера предположим, что пишется приложение, делающее некоторую обработку данных, имеющих отношение к сотрудникам компании. Для нас неважно, какую обработку оно включает, больший интерес представляет факт, что для этого достаточно полезно будет написать класс C# (или модуль класса VB), представляющий сотрудников. Мы предполагаем, что это будет формировать часть программного пакета, который можно продавать компаниям, чтобы помочь им при выплате зарплаты и т.д.
Модуль класса Employee в VB
Следующий код представляет попытку закодировать модуль класса