Книга: C# для профессионалов. Том II
Перезагрузка методов
Перезагрузка методов
Тот факт, что для класса Manager было предоставлено два конструктора, иллюстрирует принцип перезагрузки методов в C#, в соответствии с которым предполагается, что класс имеет более одного метода с одним именем, но эти методы имеют различное число параметров. Мы продемонстрировали перезагрузку конструкторов, но точно такие же принципы применимы ко всем методам.
Не путайте термины перезагрузка и переопределение методов. Это различные и никак не связанные концепции.
Когда компилятор встречает вызов перезагруженного метода, он проверяет передаваемые параметры, чтобы определить, какой метод необходимо вызвать. В случае создания объекта менеджера, так как один конструктор получает три параметра, а другой только два, то компилятор прежде всего проверит число параметров. Следовательно, если написать:
Manager SomeManager = new Manager("Name", 300000.00M);
компилятор будет использовать для создания экземпляра объекта Manager
конструктор с двумя параметрами, то есть bonus будет присвоено значение по умолчанию, равное 100000M. Если, с другой стороны, написать:
Manager SomeManager = new Manager("Name", 300000.00М, 50000.00М);
компилятор использует конструктор с тремя параметрами, поэтому bonus получит указанное значение 50000.00М. При наличии нескольких доступных перезагружаемых версий компилятор не сможет найти подходящую и проинициирует ошибку компиляции. Например, если написать.
Manager SomeManager = new Manager(100, 300000.00М, 50000.00М); // неправильно
то будет получена ошибка компиляции, так как оба доступных конструктора Manager
требуют строку, а не числовой тип в качестве первого параметра. Компилятор C# может организовать некоторый тип преобразований между различными числовыми типами, которые будут выполняться автоматически, но он не будет автоматически преобразовывать из числового значения в строку.
Наконец, отметим, что C# не разрешает методам использовать параметры по умолчанию, как это делает VB. Однако легко получить тот же самый эффект с помощью перезагрузки методов, как это сделано в нашем примере. Обычный способ состоит просто в использовании перезагруженных версий, которые имеют меньше параметров, чтобы подставить значения по умолчанию для оставшихся параметров и затем вызывать другие перезагружаемые версии.
- Параметры методов
- Множественные интерфейсы и имена методов
- Перегрузка методов с несколькими параметрами типа
- Обзор методов асинхронного ввода
- 5.5.2.3. Перезагрузка компьютера
- 3. Узкий диапазон методов конкурентного взаимодействия
- 7.12. Динамическое назначение методов
- Обзор методов управления памятью
- Выбор методов лидгена
- Выключение, перезагрузка компьютера, завершение сеанса пользователя
- Поисковая оптимизация: перезагрузка. «Соль»
- Выбор инструментальных средств моделирования и методов