构造函数和main方法有什么区别?

时间:2019-05-21 20:06:51

标签: c# constructor main-method

我已经使用C#了一段时间,但主要是在Unity中使用。我只是最近才开始只是在Visual Studio中编写C#代码。

我只是在玩用数组实现Queue,并且正在对构造函数进行一些研究。在我的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();
    }
}

现在我的问题是这两种方法有什么区别?对我而言,它们只是“程序最初运行时调用的方法”,类似于我习惯的Unity中的Start()方法。

5 个答案:

答案 0 :(得分:4)

Main()方法是程序的入口点。 创建类的对象(就您而言,队列)后,构造函数(就您而言,为Queue())就会被调用。

答案 1 :(得分:1)

此答案取决于Microsoft's C# programming guides Main() and command-line argumentsConstructors

Main Method

  

Main方法是C#应用程序的入口点。 (图书馆和   服务不需要Main方法作为入口点。)当   应用程序启动后,Main方法是第一个方法,即   调用。

     

在C#程序中只能有一个入口点。如果有一个以上的类具有Main方法,则必须使用/ main编译器选项编译程序,以指定将哪个Main方法用作入口点。有关更多信息,请参见/main (C# Compiler Options。)

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

The Constructor

  

每创建一个classstruct时,就会调用其构造函数。一个类或结构可能具有多个采用不同参数的构造函数。构造函数使程序员能够设置默认值,限制实例化并编写灵活且易于阅读的代码。有关更多信息和示例,请参见Using ConstructorsInstance Constructors

     

构造函数是一种名称与其类型名称相同的方法。它的方法签名仅包括方法名称及其参数列表。它不包含返回类型。下面的示例显示了名为Person的类的构造函数。

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

   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }
}

答案 2 :(得分:0)

main方法或任何其他方法与构造函数之间的主要根本区别在于,该方法用于显示对象的功能,而构造函数用于初始化对象。 在您的代码中,您有一个 Queue类一个队列构造器(构造器应始终与类同名)和一个 main方法在程序类中。 主要方法是程序启动的地方。在main方法中,您已初始化Queue数据类型的myQueue。这就是构造函数生效的地方。初始化一个大小为 max_size 的新队列,具体情况为5。那是构造函数的唯一功能。但是,主要方法尚未完成。它调用enQueue方法,然后在控制台上打印,并调用deQueue并再次打印,最后读取输出。

答案 3 :(得分:0)

  1. “主”方法始终是静态的,而“构造函数”可以是静态或非静态的。
  2. 在项目/应用程序首次运行时调用“ Main”方法。每次创建对象(构造函数为非静态)或首次访问静态成员(构造函数为静态)时,都会调用“构造函数”。
  3. 您可以有多个(重载)构造函数,但不能将多个Main方法设置为您的应用程序/项目的“入口点”。

答案 4 :(得分:0)

没有区别>> 让我解释一下...

使用c#编写代码并对其进行编译时,编译器将仅查看main方法。它不会查看main方法中的任何其他函数(方法),因此,如果要创建另一个函数,则需要调用它在主要方法中,以使编译器恢复为该方法并运行

构造函数是在创建对象时调用它的函数(方法)。 对于Ex:A obj = new A();

关注于new A();,这里是A()是构造函数,当您创建对象时,调用该构造函数,该构造函数具有相同的class名称,并且被调用一次...创建对象时 如果您不构造构造函数,则编译器将为您创建一个构造函数,该构造函数将为空 您可以搜索更多有关Constructor .....