当我看到这段代码时,我正在 w3schools 上学习 C#。 我的问题是:MyMethod 不应该返回值,因为该方法有一个“Console.WriteLine()”和一个默认参数?
为什么 Main 方法正常返回这 3 个调用, (代码没有任何问题,我只是想了解为什么)
static void MyMethod(string country = "Norway")
{
Console.WriteLine(country);
}
static void Main(string[] args)
{
MyMethod("Sweden");
MyMethod("India");
MyMethod();
MyMethod("USA");
}
输出:
// Sweden
// India
// Norway
// USA
我的期望:
// Norway (from the first method)
// Sweden
// India
// Norway
// USA
MyMethod 不应该返回值,因为该方法有一个“Console.WriteLine()”和默认参数?
不。这是因为它的返回类型是
void
。
由于误解,您的期望偏离了您的观察。
Main
方法是程序的“入口点”。当您执行程序(或在 IDE 中点击“运行”)时,它将被调用。
MyMethod
是一种不“自动”调用的方法。仅当某些东西(即您的代码)调用它时才会执行它。最后, can 调用它的所有内容都可以以某种方式追溯到 Main
方法。诚然,这有点不复杂,但要理解为什么你会观察到你所观察到的东西,这应该足够了。
因此,当您的程序启动时,它将跳转到
Main
。然后执行这 4 个对 MyMethod
的调用并退出。
Main
方法是编译器用来定义可执行文件“入口点”的模式之一。您的代码可以有很多很多方法。当您启动应用程序时,仅启动 Main
方法(或者更确切地说:入口点)。
在现代 C# 中,您还可以使用隐式顶级语句来替换
Main
约定。这是等效的,也许更清楚:
MyMethod("Sweden");
MyMethod("India");
MyMethod();
MyMethod("USA");
static void MyMethod(string country = "Norway")
{
Console.WriteLine(country);
}