Подтвердить что ты не робот

Функция точки входа С#

Является ли staic void main() необходимым для функции точки входа в С# или мы можем использовать некоторые другие функции? Почему main() является статическим?

4b9b3361

Ответ 1

Да, это должно быть Main. Это статично, потому что в противном случае CLR нужно будет беспокоиться о создании экземпляра типа - это означает, что вы, вероятно, должны иметь конструктор без параметров, даже если вам не нужен экземпляр типа и т.д. Почему вы хотите заставить его быть методом экземпляра?

Ответ 2

Да для приложения С#, Main() должна быть точкой входа.

Причина в том, что разработчики языка решили, что искать в качестве точки входа для вашей программы. Они могли бы использовать совершенно другой подход, чтобы найти точку входа, например. использование метаданных или создание экземпляра объекта для вас (для чего потребуется конструктор без параметров). Еще одна причина для его именования void main() заключается в том, что он интуитивно понятен для пользователей, поступающих с других языков.

Ответ 3

Static Void Main() - необходимая точка входа для любого исполняемого файла (.EXE), который будет создан на С#. Библиотека (или .DLL) может иметь другие точки входа.

Метод является Static, потому что это необходимо для доступа к методу без экземпляра объекта для адресации. Чтобы вызвать метод (отправную точку) извне приложения, требуется статический метод.

Ответ 4

Требуемая точка входа на самом деле:

static void Main(string[] args); // note capitalization and arguments

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

(Да, вы могли бы CLR потребовать, чтобы класс с Main содержал конструктор без параметров без указания параметров и делал вызов CLR этим конструктором во время глобального запуска. Но эта дополнительная работа, и на практике проще просто потребовать, чтобы Main быть статическим.)

Ответ 5

Метод Main может быть тем, что вы рассматриваете как точку входа приложения, но, насколько я знаю, в С# методы не могут быть определены непосредственно в пространствах имен, что означает, что он должен находиться внутри класса. Реальная первая выполняемая вещь - это статический конструктор класса, содержащий метод Main

using System;
namespace test
{
    class Program
    {
        static Program()
        {
            Console.WriteLine("static constructor");
        }

        public static void Main(string[] args)
        {
            Console.WriteLine("Main method");
        }
    }
}

Сначала выводит static constructor а затем Main method