Научете какво представлява и защо да го използвате
Въведение
Като често срещан начин за внедряване на полиморфизъм, Overloading
позволете на вашия код да има способността да предефинира метод с множество форми. Можете да дефинирате функция с едно и също име повече от веднъж и C# може да ги разграничи по различните сигнатури на метода.
Какво е подпис на метода
Сигнатурата прави метода да изглежда уникаленза C# компилатора. Приносът към уникалността на подписа включва:
- Име на метода
- Тип на параметъра, като стойност или препратка
- Ред на параметрите
- модификатор на параметър:
ref
out
и т.н
⚠️ Подписът невключва:
- тип връщане
- модификатор на параметър:
params
Пример за подписи:
Можем ясно да видим, че всички MyFunc(int)
, MyFunc(ref int)
, MyFunc(out int)
са уникални подписи.
⚡ Следователно не трябва и не е възможно да правим претоварването само въз основа на модификатора на параметрите return type
и params
.
Защо имаме нужда от претоварване
Претоварването на метода увеличава четливостта и гъвкавостта на нашия код. Понякога е необходимо да имате различни входове за едно и също действие. И винаги е трудно да се намерят много различни, но смислени имена за едно действие.
Примери за претоварване на метод:
Грешка на компилатора CS0111
Ако има няколко метода в клас с еднакъв подпис на метода, но различен тип връщане,компилаторът ще изведе грешка, тъй като return type
не е достатъчно, за да може компилаторът да разбере кой метод да използва.
Типът „клас“ вече дефинира член, наречен „член“ със същите типове параметри
CS0111 възниква, ако клас съдържа две декларации на членове с едно и също име и типове параметри. За повече информация вижте Методи.
Заключение:
- Методите за претоварване се диференцират въз основа на името на метода и типа и номера на параметрите
- Компилаторът не взема предвид връщания тип, докато разграничава претоварения метод.