@Anton_repr

Перегрузка методов — это не более, чем синтаксический сахар?

Является ли перегрузка метода чем-то большим, чем синтаксический сахар?
Есть класс, в котором несколько методов с названием Calculate(), имеющие аргументы (string и int).
Вызов метода будет таким: Class.Calculate(string text1, string text2) или Class.Calculate(int number1, int number2).
Но я ведь могу назвать методы как: calculateString() и calculateInt() и они ничем не будут отличаться от Calculate(), поэтому можно сделать вывод - перегрузка методов - это синтаксический сахар и не более.
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
это точно не сахар, а чистой воды полиформизм ООП
ваш вопрос скорее в плоскости стоит ли использовать полиформизм?
можно нагуглить море инфы к примеру сразу на русском https://habr.com/ru/post/37576/
ps чем пользуюсь сам, чуть ли не ежедневно
static void print(this string s, string pfx = "", string sfx = "") => Console.WriteLine(pfx + s + sfx);
static void print(this IEnumerable<string> sa, string pfx = "", string sfx = "") => sa.ToList().ForEach(s => s.print(pfx, sfx));
pps ну или упрощенно
static void print(this string s) => Console.WriteLine(s);
static void print(this IEnumerable<string> sa) => sa.ToList().ForEach(s => s.print());
ppps очень удобно
using System;
using System.Diagnostics;
using System.Linq;

namespace ff.links
{
    static partial class Program
    {
        static void Main(string[] args)
        {
            var sw = new Stopwatch();
            sw.Start();
            "let's begin...".print();

            var finds = fromTypical().scan();
            "find targets is ".print(pfx, finds.Count().ToString());
            //finds.print();
            var bro = finds.Where(b => b.Contains(ffBinary));
            "find browsers is ".print(pfx, bro.Count().ToString());
            bro.print(pfx);
            var cfg = finds.Where(b => b.Contains(fflConfig));
            "find configs is ".print(pfx, cfg.Count().ToString());
            cfg.print(pfx);
            var profiles = finds.Where(b => b.Contains(ffProfileSign));
            "find profiles is ".print(pfx, profiles.Count().ToString());
            //profiles.print();

            profiles.buildLinks(bro.First());
            //profiles.prefsApplay();

            //links2start();
            sw.Stop();
            var ts = sw.Elapsed;
            $"RunTime {ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:000}".print();
//#if DEBUG
//            "press any key to continue...".print();
//            Console.ReadKey();
//#endif
        }
        const string pfx = "  ::> ";
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Перезагрузка методов - это выдуманный вами термин.
А то что вы описали - это перегрузка.

И нет, это не совсем синтаксический сахар. А все таки часть архитектуры и местами инкапсуляции сложных методов (когда количество аргументов меняется).

К тому же это еще и к синтаксису так себе относится - это будут разные методы со всех точек зрения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы