В чем разница между конструктором и основным методом? - PullRequest
0 голосов
/ 21 мая 2019

Я уже некоторое время использую C #, но в основном в Unity. Я только недавно начал просто писать код на C # в Visual Studio.

Я просто поиграл с реализацией очереди с массивом и немного исследовал конструкторы. В моем классе Queue у меня был конструктор, который настраивал экземпляр для самого массива:

public class Queue
{

    int front = 0;
    int rear = -1;
    int size = 0;
    const int maxSize = 5;
    int[] queue;

    public Queue()
    {
        queue = new int[maxSize];
    }

    //rest of class

}

Затем в классе, который вызывает, создает очередь, проводит с ней тестирование и т. Д. Я использовал метод main:

class program
{
    static void Main()
    {
        Queue myQueue = new Queue();
        myQueue.enQueue(1);
        myQueue.enQueue(2);
        myQueue.enQueue(3);
        myQueue.enQueue(4);
        myQueue.enQueue(5);
        myQueue.enQueue(6);
        Console.WriteLine(myQueue.deQueue());
        Console.WriteLine(myQueue.deQueue());
        myQueue.enQueue(6);
        myQueue.enQueue(7);
        Console.WriteLine(myQueue.deQueue());
        Console.WriteLine(myQueue.deQueue());
        Console.WriteLine(myQueue.deQueue());
        Console.WriteLine(myQueue.deQueue());
        Console.WriteLine(myQueue.deQueue());
        Console.WriteLine(myQueue.deQueue());
        Console.ReadLine();
    }
}

Теперь мой вопрос: в чем разница между этими двумя методами? На данный момент для меня это просто «метод, который вызывается при первоначальном запуске программы», вроде как метод Start() в Unity, к которому я привык.

Ответы [ 4 ]

4 голосов
/ 21 мая 2019

Метод Main () является точкой входа в программу. Пока конструктор (в вашем случае Queue ()) вызывается, как только создается объект класса (в вашем случае Queue).

1 голос
/ 21 мая 2019

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

Основной метод

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

В программе на C # может быть только одна точка входа. Если у вас есть более одного класса, у которого есть метод Main, вы должны скомпилировать свою программу с параметром компилятора / main, чтобы указать, какой метод Main использовать в качестве точки входа. Для получения дополнительной информации см. / main (Опции компилятора C # ).

class TestClass
{
    static void Main(string[] args)
    {
        // Display the number of command line arguments:
        System.Console.WriteLine(args.Length);
    }
}

Конструктор

Всякий раз, когда создается класс или struct , вызывается его конструктор. Класс или структура могут иметь несколько конструкторов, которые принимают разные аргументы. Конструкторы позволяют программисту устанавливать значения по умолчанию, ограничивать создание экземпляров и писать код, который является гибким и простым для чтения. Для получения дополнительной информации и примеров см. Использование конструкторов и Конструкторы экземпляров .

Конструктор - это метод, имя которого совпадает с именем его типа. Его сигнатура метода включает только имя метода и список его параметров; он не включает тип возвращаемого значения. В следующем примере показан конструктор для класса с именем Person.

public class Person
{
   private string last;
   private string first;

   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }
}
0 голосов
/ 21 мая 2019
  1. Метод «Main» всегда статичен, ПОСКОЛЬКУ «Конструктор» может быть статическим или нестатичным.
  2. Метод «Main» вызывается при первом запуске проекта / приложения. ПОСКОЛЬКУ «Constructor» вызывается каждый раз, когда создается объект (когда конструктор не является статическим) или когда к статическим элементам обращаются в первый раз (когда конструктор является статическим).
  3. У вас может быть несколько (перегруженных) конструкторов, но не может быть несколько методов Main, установленных в качестве «точки входа» вашего приложения / проекта.
0 голосов
/ 21 мая 2019

Основным основным отличием метода main или любых других методов и конструктора является то, что метод используется для демонстрации функциональности объекта, тогда как конструктор используется для инициализации объекта.В вашем коде у вас есть класс очереди , конструктор очереди (имя конструктора всегда должно совпадать с именем класса) и метод main в классе программы,Основным методом является запуск программы.В основном методе вы инициализировали тип данных myQueue of Queue.Вот где конструктор вступает в силу.Он инициализирует новую очередь размером max_size , 5 в вашем случае.Это единственная функция конструкторов.Однако основной метод еще не сделан.Он вызывает метод enQueue, а затем печатает на консоли, вызывает deQueue, печатает снова и, наконец, читает вывод.

...