我收到一个错误,说必须声明一个主体,因为它没有标记为抽象、外部或部分

本文关键字:一个 抽象 记为 外部 声明 错误 因为 主体 | 更新日期: 2023-09-27 18:34:16

class Program {
    static void Main(string[] args);
    string name, state;
    double quantity, unitPrice;
    double sales, tax;
    public static double computeTax(double sales, string state) {
        double taxMultiplier = 0;
        if (string.Compare(state, "NY", true) == 0) {
            taxMultiplier = 0.04;
        } else if (string.Compare(state, "NJ", true) == 0) {
            taxMultiplier = 0.07;
        } else if (string.Compare(state, "FL", true) == 0) {
            taxMultiplier = 0.06;
        }
        return sales * taxMultiplier;
    }
    public static double computeTotal(double quantity, double price) {
        return (double) quantity * price;
    }
    public static void Main() {
        string name, state;
        System.Console.Write("Enter the name of the customer: ");
        name = System.Console.ReadLine();
        System.Console.Write(" In which state (NY / NJ / FL) ?: ");
        state = System.Console.ReadLine();
        System.Console.Write("How many items were purchased?: ");
        string input;
        input = System.Console.ReadLine();
        int numItems = System.Convert.ToInt32(input);
        System.Console.Write("What was the unit price of the items?: ");
        input = System.Console.ReadLine();
        double price = System.Convert.ToDouble(input);
        double totalSales = computeTotal(numItems, price);
        System.Console.WriteLine("Total Sales for " + name + " are: $" + string.Format("{0:0.00}", totalSales));
        double taxAmt = computeTax(totalSales, state);
        System.Console.WriteLine("The Tax Amount is: $" + string.Format("{0:0.00}", taxAmt));
        double totalWithTaxes = totalSales + taxAmt;
        System.Console.WriteLine("The total with taxes is: $" + string.Format("{0:0.00}", totalWithTaxes));
    }
}
}

我收到一个错误,说必须声明一个主体,因为它没有标记为抽象、外部或部分

首先删除以下内容,即声明一个没有主体的方法:

static void Main(string[] args);

你不能这样做:

static void Main(string[] args);

你需要一个函数体。

您只需删除以下无效行即可解决此问题。

static void Main(string[] args);

如果有意为应用程序包含两个入口点(该行实际上应该用作另一种方法),则必须为上述行包含一个方法主体。因此,删除分号并添加一个方法主体:

static void Main(string[] args)
{
    // Do something in here
}

请注意,您还必须使用 /main 在编译器中指定入口点(当有多个入口点可用时)。如果您使用的是 Visual Studio,则可以在项目选项中执行此操作。

在 .NET 中,可执行文件只能有一个入口点,即只允许一个 Main 方法。更具体地说,仅当 Sigature 与以下 2 项中的任何一个匹配并且该方法是静态的时,才会将 Main 方法视为入口点。

  1. 主(字符串[])
  2. 主()如果您提供的 main 方法的签名与上述两个不同,则不会将其视为 Main 方法。因此,允许使用以下代码,

class Program
{
        static void Main ()          //Entry point
        {
        } 
        static void Main(int number)
        {
        }
}

下面的代码无法编译,因为它在两个地方找到匹配的签名。

class Program
{
        static void Main ()          //Entry point
        {
        } 
        static void Main(String[] args)   //another entrypoint!!! Compile Error
        {
        }
}

下面的代码也无法编译,因为根本没有入口点,

class Program
{
        static void Main (int a)      //Not an Entry point 
        {
        } 
        static void Main(float b)    //Not an entry point
        {
        }
}

注意:摘自 MSDN 论坛