точка входа в программу на языке c#

Точка входа в программу на языке c#

В предыдущей статье был написан исходный код нашей первой программы на языке c#, которая содержит: один класс по имени Program, два метода для работы с консолью и один статический метод по имени Main, который так же является точкой входа в программу.

Метод Main или точка входа в программу

Если говорить простым языком, то точка входа — это место, в языке c# представленное статическим методом Main, с которого начинает выполнение ваша программа при условии, что данная программа (приложение) является исполняемым, то есть будет иметь расширение (.exe).

То есть даже если ваш класс или несколько классов будут содержать 20, 30 или более разных методов, всё равно выполнение программы начинается со статического метода Main.

точка входа - статический  метод Main

В вашем приложении Вы так же можете создать несколько классов и в каждый из них поместить статический метод Main, в результате ваша программа будет иметь несколько точек входа. Данный способ можно применять, например, для отладки ваших приложений при большом количестве исходного кода.

Но, тогда возникает вопрос, если точек входа несколько, тогда с какого места начнёт выполнение ваша программа?

Для примера добавим в исходный код нашей программы ещё один класс по имени Test, внутри которого поместим точно такой же статический метод Main, как в классе Program.

точка входа в программу

namespace Example
{
class Program
{
static void Main()
{
System.Console.WriteLine("метод 1");
System.Console.ReadLine();
}
}
class Test
{
static void Main()
{
System.Console.WriteLine("метод 2");
System.Console.ReadLine();
}
}
}

Если сейчас попытаться выполнить код, то компилятор выдаст ошибку:

Error Program 'E:\c# project\SL\Lab1\obj\x86\Debug\Lab1.exe'
has more than one entry point defined: 'Example.Program.Main()'.
Compile with /main to specify the type that contains the entry point.

Данная ошибка возникает, потому что в программе присутствует два статических метода Main, что приводит к возникновению конфликта, если сейчас перейти в свойства текущего проекта (картинка ниже), то можно найти пункт: startup object, который по умолчанию имеет значение: Not set.

Это значит, что если ваше приложение содержит хотя бы один статический метод Main, то тогда по умолчанию данный метод и будет являться точкой входа в программу, но если в приложении несколько таких методов, как в нашем примере, то тогда необходимо явно указать точку входа в программу.

Как явно указать точку входа?

Перейдите в окно Solution Explorer и нажмите правую кнопку мыши на имени проекта, в нашем случае имя проекта Lab1. После чего в списке выберите пункт Properties, в результате должно появиться вот такое окно.

startup object

Находим пункт startup object и в выпадающем списке явно указываем класс, который будет содержать точку входа в программу. Для примера выберем Example.Test, таким образом, мы явно укажем, что в качестве точки входа в нашей программе мы будем использовать статический метод Main, который находиться в классе Test, пространства имён Example.

Если сейчас запустить нашу программу, то получим вот такой результат.

новая точка входа

Если точка входа не найдена, то есть наша программа не будет содержать статический метод Main, или данный метод будет иметь не правильную синтаксическую конструкцию, к примеру он не будет иметь ключевое слово static, то Вы так же получите ошибку на этапе компиляции.

Ещё немного полезной информации о статическом методе Main можно найти в статье: Пишем исходный код программы на языке c#.

Читайте также:

One Comment

  1. Игорь says:

    Сделал всё, как написано в предыдущих уроках.
    В выпадающем окне Startup object только (Not set)

    Код программы:

    namespace Exampl
    {
    class Program
    {
    static void Mein()
    {
    System.Console.WriteLine("Первый запуск!");
    System.Console.ReadLine();
    }
     }
    }
    Решение:
    Все понял у меня Mein, а не Main :)
    Заработало, спасибо.
    

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*