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

Когато Visual Basic компилаторът разпознава призив за ред, определен в няколко версии претоварени, тя трябва да се определи кой е претоварен версия трябва да се обадите. За да направите това, компилаторът извършва следните действия:

Наличие. Изключени от внимание тези претоварени версии, които забраняват на обаждащия се да им се обадя.

Броят на параметри. Изключени от внимание тези претоварени версии, в които има различен брой параметри от посочените в поканата.

Параметрите типове данни. Компилаторът предпочитане използва методи, например, не метод разширение. Ако сте намерили метод на инстанция, която изисква да се сравни процедура разширение само за обаждания Разширяване, всички методи за удължаване са отстранени и компилаторът продължава да използва само кандидати метод например. Ако не е намерен такъв метод ekzesplyara на компилаторът продължава да се използват като методи за производство и методи за удължаване.

В тази стъпка, се изключват от разглеждане онези претоварен версия, за която типа аргументи кол данни не могат да бъдат превърнати в видове параметри, определени в този претоварен версия.

Стесняването на реализация. Изключени от разглеждане онези претоварен версия се изисква стесняване вида на обаждането за реализация аргументи в някои видове параметри. Това зависи от вида на стойностите е от ключово значение за потвърждение (оператор Option Strict) Включено или Изключено.

Най-малката разширение. Compiler разгледа останалите претоварванията по двойки. За всяка двойка компилатор сравнява типове данни, определени параметри. Ако една от претоварванията всички видове разширяват към други подходящи видове претоварване, компилаторът елиминира последния. С други думи, той остава претоварване, което изисква по-малък разширяване на трансформацията.

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

Следващата фигура показва процеса, който определя кои претоварени версии да се обадя.

Резолюция на натоварените версии

Следното е метод за разделяне на prmere претоварен версии.

В първия компилатор повикване елиминира първата претоварване, като първи аргумент (Short) се стеснява до съответния параметър (Byte). След това, на третия претоварване изключени, тъй като всеки вид аргумента във втория претоварване (Кратко и Single) може да се разшири до съответния тип в третия претоварване (Цяло число и Single). Вторият претоварен вариант изисква по-малко разширение, така че компилаторът го използва за повикването.

През второто повикване компилаторът не може да премахне някои от ускоренията, в зависимост от стеснението. Третият претоварване се елиминира по същата причина, както при първата покана, както е на второ повикване може да претоварите малки удължаване на типовете аргументи. Въпреки това, компилаторът не може да избира между първия и втория задръстванията. Всяка от тях има един определен вид параметър, който се разширява до съответното вид в друг (Byte и къса. Но единични и двойни). Поради това, компилаторът генерира резолюция претоварване грешка.

Ако процедурата два претоварване имат еднакви подписи, с изключение на това, че последния параметър е обявен избор (Visual Basic) в един и ParamArray в другата, компилаторът решава процедурата по телефона, както следва:

Ако последният аргумент е призив като

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

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