Научете какво представлява и защо да го използвате

Въведение

Като често срещан начин за внедряване на полиморфизъм, Overloadingпозволете на вашия код да има способността да предефинира метод с множество форми. Можете да дефинирате функция с едно и също име повече от веднъж и C# може да ги разграничи по различните сигнатури на метода.

Какво е подпис на метода

Сигнатурата прави метода да изглежда уникаленза C# компилатора. Приносът към уникалността на подписа включва:

  • Име на метода
  • Тип на параметъра, като стойност или препратка
  • Ред на параметрите
  • модификатор на параметър: ref out и т.н

⚠️ Подписът невключва:

  • тип връщане
  • модификатор на параметър: params

Пример за подписи:

Можем ясно да видим, че всички MyFunc(int), MyFunc(ref int), MyFunc(out int) са уникални подписи.

Следователно не трябва и не е възможно да правим претоварването само въз основа на модификатора на параметрите return type и params.

Защо имаме нужда от претоварване

Претоварването на метода увеличава четливостта и гъвкавостта на нашия код. Понякога е необходимо да имате различни входове за едно и също действие. И винаги е трудно да се намерят много различни, но смислени имена за едно действие.

Примери за претоварване на метод:

Грешка на компилатора CS0111

Ако има няколко метода в клас с еднакъв подпис на метода, но различен тип връщане,компилаторът ще изведе грешка, тъй като return type не е достатъчно, за да може компилаторът да разбере кой метод да използва.

Типът „клас“ вече дефинира член, наречен „член“ със същите типове параметри

CS0111 възниква, ако клас съдържа две декларации на членове с едно и също име и типове параметри. За повече информация вижте Методи.

Заключение:

  • Методите за претоварване се диференцират въз основа на името на метода и типа и номера на параметрите
  • Компилаторът не взема предвид връщания тип, докато разграничава претоварения метод.