2010-06-24 3 views
39

Новый шаблон консоли проекта создается Главный метод, как это:Почему главный метод закрыт?

class Program 
{ 
    static void Main(string[] args) 
    { 
    } 
}

Почему это, что ни один метод Main ни Program класс должен быть публичным?

+5

@jacerhea: Нет. 'Class Program' является внутренним,' Main() 'является закрытым. –

+1

Является ли «Новый шаблон проекта консоли» ссылкой на Visual Studio? Если это так, было бы целесообразно добавить тег «visual-studio». – DavidRR

+1

@DavidRR Да, это ссылка на VS, но это не имеет отношения к вопросу. –

ответ

42

Точка входа программы отмечена директивой IL .entrypoint. Не имеет значения, является ли метод или класс общедоступным или нет, все, что имеет значение, является этой директивой.

+10

Это также означает, что вам даже не нужно вызывать основной метод «Главная». Компилятор C# обеспечивает это, но другие языки .net могут использовать все, что захотят. –

17

Метод Main не должен вызываться кем-либо.

Фактически он помечен как точка входа для выполнения в самом EXE и, следовательно, по умолчанию не имеет внешних абонентов.

Если вы ХОТИТЕ, вы можете его открыть, чтобы называться пометкой public, например. если вы превращаете консольное приложение в API.

+1

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

+1

@ Аnders: Справедливая точка, но мы просто говорим о выполнимости, а не о дизайне. –

0

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

1) Public - Если мы хотим инициировать точку входа любой внешней программой, вам может потребоваться сделать ее общедоступной, чтобы она была доступна. 2) Частный. Если мы знаем, что для приложения нет внешнего использования, тогда лучше сделать его приватным, чтобы внешнее приложение не обращалось к нему.

Смежные вопросы