Предположим, у меня есть эти три метода определены:Функция Перегрузки
int F1(int, int);
int F1(float, float);
Float F1(int, int);
и я звоню метод F1 здесь:
Console.writeline(F1(5,6).ToString()));
Какой метод будет звонить и почему?
Предположим, у меня есть эти три метода определены:Функция Перегрузки
int F1(int, int);
int F1(float, float);
Float F1(int, int);
и я звоню метод F1 здесь:
Console.writeline(F1(5,6).ToString()));
Какой метод будет звонить и почему?
Первая и третья функции не будут компилироваться в одном пространстве имен.
Это потому, что сигнатуры функций различаются по типу и количеству параметров, и это то же самое. Типы возврата не рассматриваются как часть подписи метода.
Если у вас были только первая и вторая (или вторая и третья) в пространстве имен, то была бы названа наиболее подходящая (одна с целыми типами, в которую вы проходили целые числа).
Эрик Липперт имеет некоторые отличные blog entries о тонкостях C#.
Вы пробовали?
Вы думали бы, что он должен выполнить либо:
int F1(int, int);
или
Float F1(int, int);
Перегрузка функций, однако, не работает на возвращаемые значения - это типы параметров, которые должны быть уникальными, так что это даже не компилируется.
В C# это параметр перегрузка, а не перегрузка функции. Вы можете изменить входные параметры для метода, что может привести к другому типу возврата, но вы не можете указать тип возвращаемого типа, чтобы отличить ваш метод.
В функции перегрузки имя функций одинаково, но они различаются в любом типе параметра или номере параметра.
В функции перегрузки возвращаемый тип функции не учитывается.
Так что этот код даже не компилируется. Поскольку вы не можете написать точно такую же функцию в одном пространстве имен.
сбор ошибка, потому что одна и та же функция подпись используется дважды в вашей программе!
int F1(int, int);
Float F1(int, int);
функция подпись (имя функции + число аргументов + типа для каждого аргумента) что же в вашем случае ...
В основном функционируют перегрузкой является важной особенностью OOPS.
Он позволяет использовать несколько методов с тем же именем, но с изменениями в списке параметров.
Что формирует перегрузку функции, то, что не называется функция перегрузкой, и поэтому время компиляции полиморфизм хорошо описаны в статье Function Overloading in OOPS
class Program
{
static void Main(string[] args)
{
Add(3, 4,3);
}
public static void Add(int FN, int SN)
{
Console.WriteLine("Total is {0}", FN + SN);
}
public static void Add(int FN, int SN, int TN)
{
Console.WriteLine("Total is {0}", FN + SN + TN);
}
}
Метод перегрузочные и функции перегрузки термины используются как синонимы. Перегрузка метода позволяет классу иметь несколько методов с тем же именем. Но с другой подписью. Функции C# могут быть перегружены в зависимости от числа, типа (int, float и т. Д.) И вида (значения, ref или out) параметров. Подпись метода не включает тип возвращаемого значения и модификатор params. Таким образом, невозможно перегрузить функцию на основе типа возвращаемого значения и модификатора params.
+1 Для Lippert Link –