Почему не получается создать перегруженный метод в C#?

Я только учусь. Уже больше часа безуспешно потратил на поиск решения. Как понял проблема из-за какого-то верхнего уровня. Может кто знает как решить эту проблему? Пример в фотографии введите сюда описание изображения


Ответы (2 шт):

Автор решения: Faraday

В чём разница между методом и функцией? В том, что метод строго привязан к классу. Вы создали функции внутри исполняемого файла Program.cs. Вы можете это сделать, но это не является ошибкой, но только в рамках класса

→ Ссылка
Автор решения: rotabor

Отвечу, чтобы был понятный и полный ответ.

Ваш код эквивалентен следующему (см. комментарий EvgeniyZ):

public class Program {
    public static void Main() {
        void Test (int a) {
            Console.WriteLine(a);
        }
        void Test (string a) {
            Console.WriteLine(a);
        }
    }
}

Поэтому получилось, что Test - зто не методы, которые можно перегружать, а локальные функции метода Main.

Чтобы получить то, что вы хотите, вам нужно пересоздать проект без использования операторов верхнего уровня (или создать отдельный класс) и написать следующее:

public class Program {
    static void Test (int a) { // public as required
        Console.WriteLine(a);
    }
    static void Test (string a) { // public as required
        Console.WriteLine(a);
    }
    public static void Main() {
        // main code here
    }
}

Это и будет перегрузка метода Test в классе Program.

→ Ссылка