Есть ли разница между Main () в структуре по сравнению с классом? - PullRequest
3 голосов
/ 09 апреля 2019

Скажем, в C # у меня была Main() функция в классе Entry, которая существует исключительно для размещения точки входа.Я бы сделал это так:

public class Entry
{

    public static void Main()
    {

        ...

    }

}

Я считаю это довольно типичным, и, по крайней мере, в некоторых проектах Java на работе я видел, что классы существуют только для функции main() и никогда не задумывались об этом.Но в то время как я узнал больше о C # и структурах, я попытался сделать следующее:

public struct Entry
{

    public static void Main()
    {

        ...

    }

}

, и это работало точно так же визуально.Итак, если предположить, что ваша точка входа в C # содержит только вашу функцию Main(), делает ли ее контейнер struct реальной разницей по сравнению с class во время выполнения?

1 Ответ

3 голосов
/ 09 апреля 2019

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

Давайте посмотрим документацию

Main () и аргументы командной строки (Руководство по программированию в C #)

Основной метод - это точка входа в приложение C #.(Для библиотек и служб не требуется метод Main в качестве точки входа.) Когда приложение запускается, метод Main является первым вызванным методом.

Обзор

  • Метод Main является точкой входа исполняемой программы;Именно здесь начинается и заканчивается управление программой.
  • Main объявлен внутри класса или struct .Главное должно быть статичным и не должно быть публичным.(В предыдущем примере он получает доступ по умолчанию private.) Класс или структура вложения не обязательно должны быть статическими.

...

...