正在加载...

参数

写一个名为 greet 的方法,向内接收一个词。在括号里写 string name。在方法体里用 Console.WriteLine("hi " + name); 写出 hi、一个空格,然后是 name。从 Main 调用 greet("lena");。屏幕应显示一行:hi lena。字母 lena 没有硬编码在方法里。它们经调用到来,并在该次经过中落在名字 name 里。这种交接就是本页所教的内容。请保留公共类名 Pine。

括号里的一个名字

在方法页里,ring 后面的括号一直是空的。写出行始终是 ding。这里括号持有一个带类型的名字,好让每次调用都能传入不同的值。那个带类型的名字就是参数。你在调用里写的值,就是该次经过的实参。
打开 Pine 文件。类名保持 Pine。本页不重命名类型。若 Main 仍只持有带空括号的 ring(); 演示,且你已准备好本页形状,删掉它。删掉任何残留的 foreach。删掉任何 ReadLine 行。你保留的文件不等待键入。
在 Main 外、仍在类的花括号内,本入门形状的头标以 static void 开头。括号之间是 string 然后 name — 先类型,再参数名。C# 在本形状上把类型 string 写成小写 s。方法体使用不加引号的 name,并用加号接到固定文本 "hi "。"hi " 周围的引号标出固定字母。裸的 name 标出从调用到来的值。运行前先保存文件。完整的第一份程序在下一框。

你保留的文件

这是你先运行的版本。Main 持有括号里带值的调用。greet 持有使用该值的写出行。

greet takes a string

csharp
using System;

public class Pine
{
    public static void Main()
    {
        greet("lena");
    }

    static void greet(string name)
    {
        Console.WriteLine("hi " + name);
    }
}

从顶往下读。using System; 准备短名字。public class Pine 命名类型。public static void Main() 是运行时开始的地方。调用 greet("lena"); 把文本送进参数。static void greet(string name) 持有 Console.WriteLine("hi " + name);。屏幕上一行:hi lena。

用 dotnet run 运行。程序写出一行后停止。它不等你键入。若 dotnet run 在等待,文件里仍有 ReadLine。删掉那一行,保留 greet("lena"); 以及上面的 greet 方法。屏幕显示 hi lena。若屏幕只显示 ding,旧的 ring(); 调用仍在运行。若屏幕显示字母 name,某条写出行把该词放进了引号:Console.WriteLine("name");。屏幕行不对时,不要重装 .NET SDK。

按顺序走完一次完整运行。C# 从 Main 开始。调用 greet("lena"); 把文本 lena 送进参数 name。在 greet 里,WriteLine 拼出 hi、一个空格,然后是该值,所以屏幕显示 hi lena。然后 greet 结束,Main 也结束。你没有在 Main 里写 Console.WriteLine("hi lena");。你把固定部分写在 greet 下一次,并从调用传入 lena。
参数在调用填入之前是空的。第一次调用时,name 只在该次经过中持有 lena。稍后用 "sam" 调用时,同一个参数名持有不同的值。你不为第二个词再建第二个方法;你向同一个头标传入新的实参。

同一方法,不同的词

只改 Main,让它用两个不同的实参调用 greet 两次。不要动 greet 方法本身。

greet with two arguments

csharp
using System;

public class Pine
{
    public static void Main()
    {
        greet("lena");
        greet("sam");
    }

    static void greet(string name)
    {
        Console.WriteLine("hi " + name);
    }
}

这是第二份文件。它用两次调用教同一个方法。运行 dotnet run。屏幕应显示两行:hi lena,然后 hi sam。第一次调用用 lena 填满 name。第二次调用用 sam 填满 name。你没有在 greet 下复制 WriteLine。你只改了调用里的值。
若头标仍是 string name 时你用空括号调用 greet(),build 会写出错误 — 调用必须提供一个 string。若同一 Main 里仍留着方法页上带空括号的旧 ring();,该调用与 greet 不匹配,残留的 ring 方法仍可能在你的 hi 行旁边写出 ding。把 Main 清成这节课需要的 greet 调用。看过两行后,若你想保留的形状是一次调用,把单次调用文件放回去:Main 里一个 greet("lena");。

把整数当作值

参数不只用于文本。再写一个接收名为 n 的 int 并写出它的方法。从 Main 用整数调用,例如 show(9); 与 show(4);。

show takes an int

csharp
using System;

public class Pine
{
    public static void Main()
    {
        show(9);
        show(4);
    }

    static void show(int n)
    {
        Console.WriteLine(n);
    }
}

这是第三份文件。它不是你为 greet 形状保留的文件。运行 dotnet run。屏幕应显示两行:9,然后 4。调用里 9 或 4 不加引号 — 它们是 int 值,不是文本。在 show 里,Console.WriteLine(n) 写出到来的数字。看过那两行后,把 greet 演示放回去。两个版本都是有效的 C#。它们教同一件事:调用送入一个值,参数为方法体持有它。
再读一遍 int 运行。第一次调用把 n 设为 9 并写出 9。第二次调用把 n 设为 4 并写出 4。名字 n 在头标里声明一次,写作 int n。每次调用给它该次经过的新值。把带引号的词传入 show,例如 show("nine");,在本形状上与 int 不匹配 — build 写出错误。把裸数字传入 greet,例如 greet(3);,与 string 不匹配 — build 再次写出错误。让实参类型与参数类型匹配。

常见混用是把参数名当文字写出:Console.WriteLine("name");。那写出字母 n-a-m-e。它不写出 lena。当你想让实参的字母出现在屏幕上时,保持 Console.WriteLine("hi " + name),name 周围不加引号。另一种混用是在 Main 里声明参数,而不是在方法头标里。带类型的名字属于 greet(...) 或 show(...) 内部,不属于本页 Main 的括号。一旦头标要求 string name,来自 ring 页的空 () 就不够了。

void 仍表示调用不会交回任何东西。你可以在方法括号里放 string name 或 int n,在调用里传入匹配的值,并从方法体写出该值。两次调用带两个实参,不必复制方法就能写出两行不同内容。下一页是 return:方法把值交回 Main,而不是只在方法体里写出。

屏幕持有实参

你保留的文件在 Main 调用 greet("lena"); 时写出 hi lena。写出行里的名字 name 周围没有引号。给 name 加引号写出的是字母,不是实参。调用上的空 () 与要求 string name 的头标不匹配。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
5
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部