在哪里放置 public static void Main 方法?

5

我目前正在阅读C#编程的微软官方课程书,他们介绍给你的第一个概念是Console.WriteLine

他们要求你输入的实际代码是:

class Hello
{
    public static void Main()
    {
       Console.WriteLine("Hello, World");
    }
}

我不确定这段代码应该放在Form Load还是using System下面,因为我总是遇到以下错误,而且我不知道它的含义:

错误...Debug\WindowsFormsApplication1.exe'有多个入口点被定义:'Hello.Main()'.使用/main来编译以指定包含入口点的类型。**


3
看起来您误选了WinForms项目,而不是控制台项目。 - Andrew Savinykh
你的项目实际上有两个名为 Main 的静态方法。其中一个是由集成开发环境 Visual Studio 生成的,另一个是由你手写的。当存在两个 Main(每个都是静态的,并且具有“入口点”的有效签名)时,编译器无法确定使用哪一个,因此会出现错误。 - Jeppe Stig Nielsen
请注意,Main不应该是公共的(https://msdn.microsoft.com/zh-cn/library/acy3edy3(v=vs.140).aspx)。 - DavidRR
2个回答

7

这是一个控制台应用程序的代码,而不是WinForm应用程序。在Visual Studio中,创建一个新项目并选择控制台应用程序作为项目类型。

你会注意到一个新的控制台项目将为你编写大部分代码(例如Main方法)。

enter image description here

你之前遇到那个错误的原因是因为WinForm已经在Program.cs中有一个Main方法。Main方法被称为入口点,在独立的.net exe项目中需要有一个。你可以将入口点设为其他方法,但这在大多数情况下是很少用到的。

仅供参考,Windows Forms 应用程序也有一个 Main 方法。只是默认模板已经为您添加了它,大多数人再也不会触碰包含它的文件了。 - Geeky Guy
提到你正在输入那个评论 :) - keyboardP
是的,你说得对。我已经编辑过了,指出了独立项目。 - keyboardP
1
注意它是 static void Main(string[] args)。这意味着 args 是一个 字符串数组。另外,C#是区分大小写的,所以你需要确保它是小写的 static void。如果按下 F5 运行(在调试模式下运行),你会看到一个黑窗口闪过。这是因为程序已经执行并完成,所以控制台窗口(即黑窗口)会关闭。要解决这个问题,在 Console.WriteLine("Hello, World") 后添加 Console.ReadLine();。这告诉程序在关闭之前等待用户按回车键。 - keyboardP
1
或者,您可以通过按下CTRL + F5来启动程序。这不会在调试模式下运行,但对于控制台应用程序,控制台窗口将自动保持打开状态,而无需 Console.ReadLine();语句。(F5和CTRL + F5两种运行选项都可以在顶部的DEBUG菜单中找到)。您的输出应该可见于此控制台窗口中。 - keyboardP

2

您选择了错误的应用程序类型。

课程可能在某处提到您应该创建一个新的控制台应用程序。您在尝试中选择了Windows窗体

请尝试创建一个新的控制台应用程序Main方法将已经为您定义好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接