ПредишенСледващото

В C #, можете да споделяте всеки със същото име в два или повече метода от същия клас, при условие че техните параметри са обявени по различен начин. В този случай казваме, че методите са претоварени, и процесът се нарича метод претоварване. Претоварването на методите се отнася до един от начините за осъществяване на полиморфизма в C #.

Най-общо, методът за обработка на различните варианти достатъчно, за да декларират, а останалата част ще се грижи за компилатора. Но е необходимо да се спазват следните важното условие: вида или броя на параметрите на всеки метод трябва да бъде различен.

Съвсем недостатъчно, за да два метода се различават само по вида на ценности връщане. Те също така имат различни типове или номер на техните параметри. (Във всеки случай, типове връщане предоставят достатъчно информация, за C # компилатора да реши кой метод трябва да се използва.) Разбира се, претоварени методи могат да бъдат различни видове и да се върнат ценности. Когато се свържете с претоварен метод, изпълнена една от неговия вариант, чиито параметри отговарят на (вид и брой) премине аргументи.

Нека разгледаме един пример, използвайки метод претоварване:

Както можете да видите на потребителския интерфейс метод е претоварена три пъти. Модификатори Код и извън параметри също са взети под внимание при определяне на начина на претоварване. Въпреки факта, че модификаторите Код и извън параметри се вземат предвид при вземането на решение по метода на претоварване, разликата между тях не е толкова важно. Нека добавим още един претоварване в горния пример:

Метод претоварване поддържа полиморфизъм собственост, тъй като по този начин се реализира в C # основният принцип на полиморфизъм в един интерфейс - набор от методи. За да стане ясно, как да направите това, нека се обърнем към конкретни примери. В езиците за програмиране, които не поддържат претоварване на методи, всеки метод трябва да има уникално име. Но програмиране често е необходимо да се приложат по същество един и същ метод за обработка на различни типове данни.

Да кажем, че това отнема функция, която определя абсолютната стойност на. В езици, които не поддържат метод натоварване, обикновено трябва да създадете три или повече версии на функция с няколко различни, но с различни имена. Например, в С функция абсолютен на () връща абсолютната стойност на цяло число, лаборатории () функция - абсолютната стойност на дълго число и фабрики () функция - абсолютната стойност на плаваща точка нормален (един) точност.

В претоварване не се поддържа, и така всяка функция трябва да има свое специално име, независимо от факта, че всички по-горе характеристики, по същество правят същото нещо - абсолютната стойност на. Но това е фундаментално усложнява ситуацията, тъй като е необходимо да се помни имената на всички три функции, въпреки че те се прилагат по един и същи основен принцип. Подобни трудности в C # не възникват, тъй като всеки метод, абсолютната стойност може да бъде назначен със същото име. Всъщност, съставът на библиотеката .NET Framework клас включва метод Abs (), който се зарежда в System.Math клас за обработка на данни на различни цифрови видове. C # компилатор определя коя версия на метод Abs на () трябва да се нарича, в зависимост от типа на предаваната аргумент.

В C #, дефинирано понятието за подпис. посочва името на метода, както и списък на нейните параметри; Що се отнася до претоварване този термин означава, че един клас не трябва да съществува два метода със същия подпис. Трябва да се подчертае, че подписът не включва типа на връщане, тъй като не се взема под внимание, когато C # компилатора да вземе решение относно начина на претоварване. Подписът не се включва като модификатор Поколения назад.

За укрепване на концепцията за претоварването на методите, нека да погледнем на вградения претоварване на IndexOf метод, клас String System пространство от имена:

Ръководство C # метод претоварване

Този пример използва само малка част от наличната IndexOf метод претоварване на C #, ако не поддържа претоварване, тя ще трябва да се дава на всеки метод за името му, което разбира се е много неудобно. В този случай, методът на IndexOf прилага няколко претоварвания, за да откриете героите и подниза в оригиналния низ.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!