Перегрузка метода (полиморфизм) в C #
В этом блоге я собираюсь объяснить, что такое перегрузка метода, также известная как полиморфизм.
Допустим, нам нужны два разных метода с одинаковым именем. Если мы определим такие методы, это приведет к ошибке компилятора:
CS0111: Тип «Class_Name» уже определяет член с именем «MyMethod» с такими же типами параметров.
Но как мы можем справиться с этой ошибкой?
Итак, здесь была бы полезна перегрузка метода. По сути, перегрузка метода означает «определение метода с одним и тем же именем в разных формах». Их можно перегрузить тремя способами:
- Имея разное количество параметров
- Имея разные типы параметров
- Другой порядок параметров
Это может сбить вас с толку, но вам не нужно об этом беспокоиться. Вы поймете их по мере вашего продвижения.
Таким образом, имея некоторую базовую информацию, мы можем приступить к их пониманию.
Имея разное количество параметров
Предположим, у нас есть методы MyMethod с двумя разными вариантами. Разница лишь в том, что у них разное количество параметров. Давайте посмотрим на пример:
public int MyMethod(int number) { return number; } public int MyMethod(int firstNumber, int secondNumber) { return firstNumber + secondNumber; }
Как видите, оба метода имеют одинаковое имя, но их параметры разные. Первый принимает параметр целого типа number
. Второй принимает два параметра с целым числом, называемым firstNumber
и secondNumber
. В результате нет ошибки компилятора, и все они работают нормально.
Итак, мы поняли первую часть полиморфизма. Если бы у вас не было проблем с этой частью, другие формы перегрузки метода были бы проще.
Теперь давайте посмотрим на второй способ перегрузки метода.
Имея разные типы параметров
В этом способе полиморфизма каждый метод будет принимать один параметр, но их типы данных будут разными.
Примечание: я использую типы данных int и string, но не забывайте, что вы можете использовать любые два разных типа.
В приведенном выше примере, как всегда, у нас одно и то же имя метода. Первый метод принимает целочисленное значение с именем number ,
, а другой - со строковым значением с именем name.
.
Вы можете видеть, как эти два способа полиморфизма похожи друг на друга. Точно так же третий способ будет таким же простым, как и первые два.
Чтобы увидеть, насколько они похожи, продолжайте читать о третьем варианте перегрузки метода.
Имея разный порядок параметров
В первом варианте у нас было другое количество параметров. Во втором варианте у нас были разные типы параметров. Теперь у нас будет такое же количество параметров, но они будут в другом порядке.
Чтобы понять, см. Следующее:
int myNumber;public void MyMethod(int number, string name) string myName; { myNumber = number; myName = name; } public void MyMethod(string name, int number) { myName = name; myNumber = number; }
Как видите, они принимают одни и те же параметры в разном порядке. Сначала берет number
, затем name
. Второй делает этот процесс в обратном порядке. То есть, во-первых, берет name
, во-вторых, занимает number.
Заключение
Подводя итог, можно сказать, что перегрузка методов - одна из самых важных тем в программировании. Представьте, что если вы не используете это, вы придумаете разные имена для методов, которые выполняют похожие задачи. В результате мы поняли, что такое перегрузка метода и как она используется. Надеюсь, это помогло вам и вам понравилось.