Функция входа в C # - PullRequest
       29

Функция входа в C #

18 голосов
/ 10 мая 2011

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

Ответы [ 5 ]

18 голосов
/ 10 мая 2011

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

10 голосов
/ 10 мая 2011

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

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

4 голосов
/ 10 мая 2011

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

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

1 голос
/ 10 мая 2011

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

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

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

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

0 голосов
/ 06 февраля 2019

Метод Main может быть тем, что вы рассматриваете как точку входа приложения, но, насколько мне известно, в c # методы не могут быть определены непосредственно в пространствах имен, что означает, что он должен находиться внутри класса.Реально первым выполняемым объектом является статический конструктор класса, содержащий 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...