C# 多个主要方法的用途是什么?

C# 多个主要方法的用途是什么?,c#,C#,c#使我们能够使用该方法定义多个类。Main方法是程序执行的入口点。那么为什么我们希望有不止一个地方来执行程序呢。与单一主方法相比,多个主方法的优势是什么 编辑: 示例.cs Class Example_1 { public static void Main() { System.Console.WriteLine("Example 1") } public void test() { System.Console.WriteLine("Test method")

c#使我们能够使用该方法定义多个类。Main方法是程序执行的入口点。那么为什么我们希望有不止一个地方来执行程序呢。与单一主方法相比,多个主方法的优势是什么

编辑:

示例.cs

Class Example_1
{
 public static void Main()
  {
   System.Console.WriteLine("Example 1")
  }

 public void test()
  {
   System.Console.WriteLine("Test method")
  }
}

Class Example_2
{
 public static void Main()
  {
   System.Console.WriteLine("Example 2")
  }
}
如果我输入“csc Example.cs”,那么会发生什么? 如果我想在类示例_2中继承类示例_1的测试方法,该怎么办。这个代码行得通吗

Example_1 abc = new Example_1();
abc.test();

在不同的类中可以有多个名为Main()的方法。但只有一个用于启动程序。这只是一个普通的方法,你可以用另一个Main来做任何你想做的事情。(但不推荐使用。)

您可以使用它,以便不同的生成配置生成相同的可执行文件,但具有不同的入口点,例如控制台入口点和WinForms入口点


就我个人而言,我在演讲时以及在C#Depth的示例代码中使用它。每个文件都是一个自包含的示例,但只有一个入口点更简单,因此入口点使用实用程序类提示用户要运行哪个示例。

首先,如果您有多个主方法,您可以指定编译器将哪个方法用作应用程序的入口点

多个主要方法可用于测试目的。也许您正在开发一个类似文本编辑器的windows应用程序。例如,如果您正在处理语法高亮显示之类的事情,那么可以使用一个额外的main方法来启动GUI、加载测试文件并启用适当的语法高亮显示。
另一个例子可以是一个仅为控制台使用而编译的应用程序,也可以是一个包含两个不同类和main方法的windows应用程序。

这种情况可能很少发生,但我可以想象,如果您必须链接到具有main()方法的外部代码,然后你会告诉编译器使用你的方法。

为什么不能用一个Main方法创建多个类?毕竟,
Main
只是方法的名称。如果您创建了一个类,那么在其中定义一个名为
Main
的方法是完全可以的。

当您使用Visual Studio CMD提示符时

然后尝试按如下所示执行:

csc filename.cs /main:classname
其中filename是存储代码的文件名,classname是包含Main的类的名称,我们希望将其作为入口点

在给定的程序中,有两个类A和B,其中每个类都包含一个主方法。我们可以这样写

csc filename.cs/main:A[用于A类主执行]或


csc filename.cs/main:B[对于B类主执行]

在C#程序中只能有一个入口点。如果有多个类具有Main方法,则必须使用/Main编译器选项编译程序,以指定使用哪个Main方法作为入口点

编译t2.cs和t3.cs,指定Main方法将在Test2中找到,如下所示:


csc t2.cs t3.cs/main:Test2

如果链接到包含main方法的程序集,则无需告诉编译器任何事情。。。第三方Main方法不会出现在程序集中,因此不会出现歧义。我很好奇,如果链接到netmodule,是否会出现这种歧义。如何告诉编译器/链接器
Main
方法中的哪一个是入口点?通过VS.NET项目配置中的“启动对象”设置?如何选择在其元数据中实际标记有
.entrypoint
标记的方法?我正在寻找一些
EntryPointAttribute
,但只找到了对F#的引用。我从未尝试过用C#实现它,我认为这只是命名约定的问题,这确实不是最好的方法。@Uwe:@Ondrej:通过项目属性或/main:命令行开关。假设我有带main方法的类a和类B。如果我在命令中键入“csc Example.cs”,将使用哪一个作为默认方法line@subanki:它会给你一个错误。正如我前面所说,您需要使用/main:command-line开关。您不能用main方法参数和/或条件编译符号实现同样的功能吗?@tenor——当然可以,这是我的方式(出于测试目的,我使用预处理器方向,对于gui切换,我使用参数)@科迪·格雷——我不知道你是什么意思……问题是为什么而不是怎么做。