Какво означава overload method?


0
Здравейте, готвя се за изпит C#2 и по принцип горе долу знам как се използват методи.
Но ме мъчи въпроса какво точно означава overload method? Това да не би да значи подаване на стойности на метода?
Благодаря предварително.



Отговори



9
Overload-ите на един метод са негови варианти с различни параметри. Т.е. overload-ване на метод означава разширяване на възможностите му да работи с друг набор от параметри. Например на един метод може да се подаде параметър double, параметър int, параметър float... всяка една от тези възможности е отделен overload на метода.
Пример - метод Area, който връща лице на равнинна фигура. Единият му overload ще приема параметри double a, double b - за правоъгълник. Друг овърлоуд ще приема double a, double b, double h - за трапец (формулите са различни). Един и същи метод, едно и също действие (връща лице на фигура), различни параметри - според случая/фигурата. Всеки овърлоуд се различава от другите или по броя на параметрите, или по типа им. Т.е. не можеш да имаш два различни овърлоуда на един и същи метод с eдна и съща двойка(тройка, четворка и т.н.) параметри (double, double), но можеш да имаш един такъв и друг с (double, int) или пък с (double, double, double) или само с един double.
Hint: когато един метод има повече от един overload, intellisense ще ти подскаже - появяват ти се едни стрелкички, с които можеш да погледнеш кои са възможните overload-и на метода.
Виж например Math.Abs()

от easlavov (4118 точки)


0
Малка корекция - примерът с Area няма да се компилира, защото при overload не се гледат имената на параметрите, а типовете и броят им (т.е. сигнатурата). В примера ти имаш на практика 2 метода със сигнатура Area(double, double), което няма да се хареса на компилатора.


0
Вече е трапец :) + допълнителни разяснения в тази посока. Мерси, че забеляза!

от easlavov (4118 точки)


1
Общо взето методи с еднакво име но различни като брой и/или тип на входните или на връщаните данни.
public static int Method(int a, int b)
{
return a + b;
}
-------
public static int Method (int a)
{
return a*a;
}
и т.н.

от kalin.dimchev (645 точки)


1
Метод със същото име, но с различни параметри.
Може да имаш много методи, стига те да са с различни параметри.
Примери:
Example(int a)
Example(int a, int b)
Example(float a)
Example(float a, float b)
и така нататък.
П.П Това не е уникално за C#, и други езици го могат.

от syndbg (296 точки)