CLR如何知道要调用哪个方法,因为它们返回不同的值(一个是void而另一个是int)?在重载意义上,这也是不对的,具有相同参数和不同返回类型的方法。
示例:
class Program
{
static int Main(String[] args) //Main with int return type but Parameter String[] args
{
return 0;
}
/* this main method also gonna get called by CLR even though return type void and Same parameter String[] args.
static void Main(String[] args) //Main with int return type but String[] args
{
} */
private static void func(int one)
{
Console.WriteLine(one);
}
private static int func(int one) //compiler error. two overloaded method cant have same parameter and different return type.
{
return 1;
}
}
但主要方法不是维护重载规则。
答案 0 :(得分:4)
如果您提供的签名与上述签名不同的主要方法,则不会将其视为主要方法。因此,允许使用以下代码,
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
{
}
}