程序“”定义了多个入口点:'Class.Main()'。使用/ main编译以指定包含入口点的类型。
我已搜索并搜索过,并且只找到了指定入口点类(/ main:class)但不是类型的语法。有人可以帮忙吗?
static void Main()
{
}
static void Main(string[] args)
{
}
答案 0 :(得分:7)
基本上你不能这样做。
您只能指定类型是一个入口点,而不是类型中的主要重载应该是入口点。
如果要将代码保持在相同的外部类型中,可以创建包含其中一个的嵌套类:
using System;
using System.IO;
using System.Text.RegularExpressions;
class Test
{
class Parameterless
{
static void Main()
{
}
}
static void Main(string[] args){}
}
然后,您需要使用/main:Test
或/main:Test.Parameterless
,具体取决于您要调用的那个,或者在Visual Studio的项目属性中使用应用程序入口点。
答案 1 :(得分:4)
我认为不可能超载main,原因如下:程序中只能有一个入口点!
“/ main”允许你做的是指定包含主入口点的类型(即类或结构),而不是签名(即哪个重载),因此编译器会有歧义。
答案 2 :(得分:3)
Main()的规则允许您列出的两种形式的Main,但在类中任何一次只能出现一种形式。如果他们在不同的类中,您可以使用它来解决问题。您看到的是重载规则未涵盖的一个案例。
答案 3 :(得分:1)
作为最后的手段,你可以尝试
static void Main(string[] args) { if (args == null) { } else { } }
可能不是最好的方法,但它会起作用。具有2个入口点的应用程序的概念是违背的。