首页 > 解决方案 > c#中的同一个类中是否可以有多个具有不同声明的Main方法

问题描述

我们知道Main方法是程序的入口点,如果我们指定方法的编译器StartupObject,我们可以在不同的类中使用多个 Main 方法。如果我们在同一个类中有多个具有不同声明的 Main 方法会怎样?我们可以在方法级别指定编译器吗?

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Test");
        }
        static void Main()
        {
            Console.WriteLine("Test 1");
        }
    }
}

更新:输出是错误 CS0017 程序定义了多个入口点。我的主要疑问是我们是否可以在方法级别指定 StartupObject 或是否存在任何其他属性来执行此操作。?

谢谢

标签: c#

解决方案


您可以定义多个类型,每个类型都有一个Main方法,并且您可以使用编译标志指定将这些类型中的哪些类型视为入口点/main

据我所知,您不能Main在一种类型中拥有两种不同的重载方法并告诉编译器使用哪种方法。如果目标是让一个Main接受输入参数和一个无参数,一种解决方法可能是使用params关键字来有效地使参数成为可选参数。

class Program 
{
  static void Main(params string[] args)
  {
    if (args.Length > 0)
    {
      Console.WriteLine("Test");
    }
    else
    {
      Console.WriteLine("Test 1");
    }
  }
}

推荐阅读