我最近决定自学如何编码(使用Microsoft Virtual Academy等免费在线工具),我决定将C#作为我的首发语言。
正如大多数初学者所做的那样,我有一个非常基本的问题,我似乎无法找到答案(可能因为它太简单了)。我正在使用Visual Studio,我只是想知道软件是如何运行我编写的代码的。
这是我的猜测:我相信当我运行代码时,它只会执行“class Program1”中的操作,因为这是代码中的第一个类。一旦它到达该块的末尾,它就没有其他任何东西可以关闭控制台(或者更技术上我在按下ENTER时关闭控制台)。
最初我认为它应该通过“类Program2”运行,但是在尝试它并看到它不能按预期工作后,我被引导相信有任何类功能,就像我想要的那样(除了列出的第一个 - 本例中的Program1)需要调用它。我是否理解VS将如何运行我的代码?我为术语中的任何混淆道歉。提前谢谢!
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Testing
{
class Program1
{
static void Main(string[] args)
{
Console.WriteLine("I'm Text!");
Console.ReadLine();
}
}
class Program2
{
static void Main2(string[] args)
{
Console.WriteLine("I'm More Text!");
Console.ReadLine();
}
}
}
答案 0 :(得分:3)
你基本上是正确的。默认情况下,它会尝试查找在启动时执行签名static void Main(string[] args)
的方法(返回类型为int
和/或也不接受任何参数)。
Main方法是C#控制台应用程序或Windows应用程序的入口点。 (库和服务不需要Main方法作为入口点。)。启动应用程序时,Main方法是第一个被调用的方法。
https://msdn.microsoft.com/en-us/library/acy3edy3.aspx
我说"默认情况下#34;因为你确实可以有多个带有该签名的方法(在不同的类中)。如果这样做,则会收到编译器错误
错误1程序&#c; ... \ obj \ Debug \ MyProgram.exe'定义了多个入口点:' MyProgram.Program.Main(string [])'。使用/ main编译以指定包含入口点的类型。
在这种情况下,您可以使用编译标志/main
来指定执行的开始位置。