为什么 MyMethod 即使使用 Console.WriteLine() 也不返回值

问题描述 投票:0回答:2

当我看到这段代码时,我正在 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
c# methods
2个回答
1
投票

MyMethod 不应该返回值,因为该方法有一个“Console.WriteLine()”和默认参数?

不。这是因为它的返回类型是

void

由于误解,您的期望偏离了您的观察。

Main
方法是程序的“入口点”。当您执行程序(或在 IDE 中点击“运行”)时,它将被调用。

MyMethod
是一种“自动”调用的方法。仅当某些东西(即您的代码)调用它时才会执行它。最后, can 调用它的所有内容都可以以某种方式追溯到
Main
方法。诚然,这有点不复杂,但要理解为什么你会观察到你所观察到的东西,这应该足够了。

因此,当您的程序启动时,它将跳转到

Main
。然后执行这 4 个对
MyMethod
的调用并退出。


1
投票

Main
方法是编译器用来定义可执行文件“入口点”的模式之一。您的代码可以有很多很多方法。当您启动应用程序时,仅启动
Main
方法(或者更确切地说:入口点)。

在现代 C# 中,您还可以使用隐式顶级语句来替换

Main
约定。这是等效的,也许更清楚:

MyMethod("Sweden");
MyMethod("India");
MyMethod();
MyMethod("USA");

static void MyMethod(string country = "Norway")
{
  Console.WriteLine(country);
}
© www.soinside.com 2019 - 2024. All rights reserved.