带字符串参数的主方法入口点给出“不包含……合适的……入口点”错误

问题描述 投票:6回答:5

为什么下面的代码块会给出“不包含适合入口点的静态'Main'方法”的编译错误?

namespace MyConApp
{
    class Program
    {
        static void Main(string args) 
        {
            string tmpString; 
            tmpString = args;
            Console.WriteLine("Hello" + tmpString);
        }
    }
}
c# syntax
5个回答
4
投票

请参阅this了解Main方法签名选项。


5
投票

因为该参数是String而不是预期的String Array


5
投票

在您提供的代码中,问题是,'Main'入口点期望在调用程序时从系统传递一个字符串数组(此数组可以为null,没有元素)

更正更改

static void Main(string args) 

to

static void Main(string[] args) 

如果您声明“ void”或“ int”以外的任何类型的“ Main”,则可能会出现相同的错误

因此,“ Main”方法的签名必须始终是

static // ie not dynamic, reference to method must exist
public // ie be accessible from the framework invoker
Main   // is the name that the framework invoker will call

string[] <aName> // can be ommited discarding CLI parameters
* is the command line parameters space break(ed)

来自MS(...)Main方法可以使用参数,在这种情况下,它采用以下形式之一:

static int Main(string[] args)
static void Main(string[] args)

4
投票

Main方法的唯一有效签名是:

static void Main()

static void Main(string[])

[static void Main(string)不是Main方法的有效签名。


2
投票

主方法的签名必须是main(String[]),而不是main(String)

© www.soinside.com 2019 - 2024. All rights reserved.