我已经使用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()
方法。
答案 0 :(得分:4)
Main()方法是程序的入口点。 创建类的对象(就您而言,队列)后,构造函数(就您而言,为Queue())就会被调用。
答案 1 :(得分:1)
此答案取决于Microsoft's C# programming guides Main() and command-line arguments和Constructors
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); } }
每创建一个class或struct时,就会调用其构造函数。一个类或结构可能具有多个采用不同参数的构造函数。构造函数使程序员能够设置默认值,限制实例化并编写灵活且易于阅读的代码。有关更多信息和示例,请参见Using Constructors和Instance 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)
答案 4 :(得分:0)
没有区别>> 让我解释一下...
使用c#编写代码并对其进行编译时,编译器将仅查看main方法。它不会查看main方法中的任何其他函数(方法),因此,如果要创建另一个函数,则需要调用它在主要方法中,以使编译器恢复为该方法并运行
构造函数是在创建对象时调用它的函数(方法)。
对于Ex:A obj = new A();
关注于new A();
,这里是A()
是构造函数,当您创建对象时,调用该构造函数,该构造函数具有相同的class名称,并且被调用一次...创建对象时
如果您不构造构造函数,则编译器将为您创建一个构造函数,该构造函数将为空
您可以搜索更多有关Constructor .....