方法
写一个名为 ring 的方法,写出一个词:ding。把这些写出行放在带空括号的 static void ring() 下面。在 Main 里只写 ring(); — 名字,然后空括号,然后分号。运行程序。屏幕应显示一行:ding。Main 不持有 ding 的 WriteLine。方法持有。这种拆分就是本页所教的内容。请保留公共类名 Pine。
住在 ring 下面的行
到目前为止,你的写出工作大多直接写在 Main 里。那样仍然可行。方法给同样的行一个自己的名字。你在那个名字下写一次这些行。然后 Main 把名字写成调用,来请求它们。
打开 Pine 文件。类名保持 Pine。本页不重命名类型。若仍有遍历 plants 或 slots 的 foreach,删掉它。若仍有带 break 或 continue 的计数 for,删掉它。删掉任何 ReadLine 行。你保留的文件不等待输入,Main 里也没有残留的循环演示。
在 Main 外、仍在类的花括号内,你将写出 static void ring(),其方法体运行 Console.WriteLine("ding");。完整程序在下一框,便于干净复制。
词 static 留在这个入门形状上,好让 Main 不用创建对象就能调用 ring。词 void 表示此方法不向调用方交回值 — 它只运行自己的方法体。名字 ring 是你将在 Main 里键入的标签。空括号 () 表示本页的方法不接收传入值。花括号装着方法体。运行前先保存文件。
你保留的文件
这是本页的完整小程序。Main 只持有调用。ring 持有写出行。这份保留文件里没有索引计数器,也没有数组遍历。
using System;
public class Pine
{
public static void Main()
{
ring();
}
static void ring()
{
Console.WriteLine("ding");
}
}
从顶往下读。using System; 准备短名字。public class Pine 命名类型。public static void Main() 是运行时开始的地方。Main 里唯一的语句是 ring();。在 Main 下方、仍在类内,static void ring() 持有 Console.WriteLine("ding");。屏幕上一行:ding。
用 dotnet run 运行。程序写出一行后停止。它不等你键入。若 dotnet run 在等待,文件里仍有 ReadLine。删掉那一行,保留 Main 里的 ring(); 以及上面的 ring 方法。屏幕显示 ding。若屏幕显示 leaf 与 mint,仍有残留的 foreach 在写出。若屏幕显示字母 ring,某条写出行把该词放进了引号:Console.WriteLine("ring");。屏幕行不对时,不要重装 .NET SDK。
按顺序走完一次完整运行。C# 从 Main 开始。Main 里唯一的语句是 ring();。该调用跳进 ring 方法。在 ring 里,WriteLine 写出 ding。然后 ring 结束,Main 没有剩下的语句,程序结束。本页你没有把 Console.WriteLine("ding"); 放进 Main。你把它放在 ring 下,并用名字请求它。若屏幕显示 ding,调用到达了方法体。若干净 build 后屏幕仍空白,说明 Main 从未调用 ring。
把 ring 想成写出行的带标签架子。Main 不必重复那些行。它只需要把架子名写成一次调用。所以简短的 Main 仍能产生清楚的屏幕行:工作住在方法名下,调用就是请求。一旦这个模式清楚,再加一次调用只是对同一架子再请求一次。
从 Main 多次调用 ring
只改 Main,让它调用同一方法两次。不要动 ring 方法本身。方法体仍是每次调用写出一次 ding。
using System;
public class Pine
{
public static void Main()
{
ring();
ring();
}
static void ring()
{
Console.WriteLine("ding");
}
}
这是第二份文件。它不是你为单次调用形状保留的文件,但教的是同一个方法。运行 dotnet run。屏幕应显示两行,每行都是 ding。第一次调用运行方法体一次。第二次调用再次运行同一方法体。这种复用就是给这些行起名的理由。你没有在 ring 下再复制一遍 WriteLine。你在 Main 里写了第二次调用。
若只留下一个 ring();,屏幕回到单个 ding。方法定义本身不会写出。只有来自 Main 的调用才会运行方法体。定义了 ring 却从不调用它的文件可以 build,运行时仍可能显示空白屏幕。看过两行之后,若你想保存的是单次调用形状,就把保留的单次调用文件放回去:Main 里一个 ring();。
方法头的零件
本页的头是 static void ring()。从左往右读。static 让 Main 能在这个入门形状上调用方法。void 表示调用不交回值。ring 是名字。() 故意为空:本课不把词或数字传进方法。下一页 parameters 会把名字放进这些括号。再下一页 return 在需要交回值时改掉 void。两者都留给以后。今天空 () 与 void 就够了。
📊 Header piece on this page
| Piece | On this page |
|---|---|
static |
Main can call ring without an object |
void |
ring does not hand a value back |
ring |
the name you type in the call |
() |
no values go in on this page |
{ ... } |
the body that writes ding |
Main 里的调用必须与名字完全一致:小写 r、空括号与分号的 ring();。写成大写 R 的 Ring(); 对 C# 是另一个名字。不带 () 的 ring 在本形状上不是调用。写成 Console.WriteLine("ring"); 会写出单词 ring 的四个字母;它不会运行方法体。想要屏幕上是 ding 时,请保持调用为 ring();。
常见残留是旧的 foreach plants 遍历仍坐在 Main 里、挨着新调用。那时屏幕可能显示 leaf 与 mint,或 2、4 与 6,而不是 ding — 或两类行混在一起。把 Main 清到本课需要的 ring(); 调用。另一种混淆是把方法放进 Main 的花括号里。本页的方法坐在类内、挨着 Main,而不是嵌在 Main 里面。
上一页的 foreach 遍历数组里已经存好的值。本页不遍历数组。它命名一个 void 方法并调用它。不要把 foreach (string plant in plants) 留在同一个 Main 里,再奇怪为什么屏幕显示 leaf 而不是 ding。本课保留的 Main 应只持有 ring(); 调用。方法体持有写出 ding 的那一行。
你现在可以写 static void ring(),在花括号里放一个 WriteLine,并从 Main 调用 ring(),让屏幕显示 ding。调用两次会写出两次 ding,无需复制方法体。空括号与 void 故意留在本页。下一页是 parameters:名字进入括号,好让方法使用你从 Main 传入的值。
屏幕就是方法体
你保留的文件在 Main 有一次调用时写出一次 ding。名字 ring 在调用里;除非你给它加了引号,字母 ring 不会作为打印词出现在屏幕上。空 () 既在头上,也在调用上。把 ring 嵌进 Main 不是本课要建的形状。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部