Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Это содержимое перепечатывается разрешением Pearson Education, Inc. из руководства по проектированию платформы: соглашения, идиомы и шаблоны для повторно используемых библиотек .NET, 2-го выпуска. Этот выпуск был опубликован в 2008 году, и книга с тех пор была полностью пересмотрена в третьем выпуске. Некоторые сведения на этой странице могут быть устаревшими.
Перегрузка членов означает создание двух или нескольких членов одного типа, которые отличаются только количеством или типом параметров, но имеют то же имя. Например, в следующем WriteLine
случае метод перегружен:
public static class Console {
public void WriteLine();
public void WriteLine(string value);
public void WriteLine(bool value);
...
}
Так как только методы, конструкторы и индексированные свойства могут иметь параметры, их можно перегружать только этими элементами.
Перегрузка является одним из наиболее важных методов повышения удобства использования, производительности и удобочитаемости многократно используемых библиотек. Перегрузка по количеству параметров позволяет предоставлять более простые версии конструкторов и методов. Перегрузка типа параметра позволяет использовать одно и то же имя члена для членов, выполняющих идентичные операции с выбранным набором различных типов.
✔️ Попробуйте использовать описательные имена параметров, обозначающие значение по умолчанию, используемое более короткими перегрузками.
❌ Избегайте произвольного изменения имен параметров в перегрузках. Если параметр в одной перегрузке представляет те же входные данные, что и параметр в другой перегрузке, параметры должны иметь то же имя.
❌ Избегайте несоответствий в порядке параметров в перегруженных членах. Параметры с одинаковым именем должны отображаться в одной позиции во всех перегрузках.
✔️ Сделайте только самую длинную перегрузку виртуальной (если требуется расширяемость). Более короткие перегрузки должны просто вызывать более длинные перегрузки.
❌ НЕ используйте ref
или out
модификаторы для перегрузки элементов.
Некоторые языки не могут разрешать вызовы перегруженных функций таким образом. Кроме того, такие перегрузки обычно имеют совершенно другую семантику и, вероятно, не должны быть перегрузками, а двумя отдельными методами.
❌ Не добавляйте перегрузки с параметрами на тех же позициях и схожими типами, но с разной семантикой.
✔️ Разрешайте передавать null
для необязательных аргументов.
✔️ Используйте перегрузку элементов, а не определяйте элементы с аргументами по умолчанию.
Аргументы по умолчанию не соответствуют CLS.
© Часть 2005, 2009 Корпорация Майкрософт. Все права защищены.
Перепечатан с разрешения Pearson Education, Inc. из Руководство по проектированию: Соглашения, идиомы и шаблоны для повторного использования библиотек .NET, 2-е издание Кшиштоф Чвалина и Брэд Абрамс, опубликованное 22 октября 2008 года Addison-Wesley Профессиональный в рамках серии разработки Microsoft Windows.