正在加载...

类

类是你用 class 声明的命名类型。把 public class Badge 放在与 Pine 同一教学文件里,或作为第二种类型放在 Pine 旁边。在 Badge 里写一个短的 static 方法 show,写出 ready。在 Pine 里保留 Main,并调用 Badge.show();。用 dotnet run 运行。屏幕应显示一行:ready。这里不是用递归倒计时。你是在命名第二种类型,并请该类型的方法去写出。这第二种命名类型——不只是启动程序的那个类——就是本页要教的内容。请把启动用的公共类名保持为 Pine。

类型坐在启动类旁边

到方法页之前,几乎每个演示都把 Main 和辅助方法放在名为 Pine 的同一个公共类里。那样仍然可行。本页故意再加第二个类。Badge 是类型名。它不必是启动程序。启动程序是 Pine。在本页的初学者形状里,两种类型可以同处一个文件,这样 dotnet run 仍然简单。要紧的是类型名:Badge 拥有 show,Pine 去请求它。
打开 Pine 文件。启动类名保持 Pine。本页不重命名启动类。若 Main 里仍全是 down 递归残留,删掉它。删掉任何残留的 mark。删掉任何 ReadLine 行。你保留的文件不等待键入。
在 Pine 的花括号之外——仍在同一文件里——写下 public class Badge。在 Badge 里写下 static void show()。方法体是一行写出:Console.WriteLine("ready");。本页保持 void。方法不返回数字。它只写出一个词。本页的 Badge 里没有 Main。这是故意的。类可以持有方法,而不必是启动类。
运行前先保存文件。第一个代码框只显示 Badge,方便你干净地读类型。第二个代码框是 Pine 与 Badge 同在的完整保留形状。

Badge type with show

csharp
using System;

public class Badge
{
    static void show()
    {
        Console.WriteLine("ready");
    }
}

Pine 启动;Badge 写出

Pine 保留 public static void Main()。在 Main 里写一次调用:Badge.show();。这次调用点名类型 Badge,一个点,再是方法 show。除非 show 也活在 Pine 里,否则不要在 Pine 里单独写 show();。本页上 show 属于 Badge,所以调用要带上类型名。

Pine Main calls Badge.show

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Badge.show();
    }
}

public class Badge
{
    static void show()
    {
        Console.WriteLine("ready");
    }
}

从顶部读保留的文件。using System; 准备短名称。public class Pine 是启动类。public static void Main() 是运行时开始的地方。调用 Badge.show() 进入 Badge 类型里的方法。该方法写出 ready 并返回。然后 Pine 结束。屏幕上的词来自 Badge,不是来自写在 Pine 自身内部的 WriteLine。这一拆分才是要点:一个类启动程序;另一个类持有助手。

用 dotnet run 运行。程序写出一行后停止。它不等你键入。若 dotnet run 在等待,文件里仍有 ReadLine。删掉那一行,保留 Pine 里的 Badge.show(); 以及 Badge 里的 show 方法。屏幕显示 ready。若屏幕显示 3,然后 2,然后 1,残留的 down(3) 调用仍在运行。若屏幕显示字母 Badge,写出行带了引号:Console.WriteLine("Badge");。屏幕行不对时,不要重装 .NET SDK。
再按顺序走一遍运行。C# 从 Pine.Main 开始。那里唯一的语句是 Badge.show();。该调用跳进 Badge 的 show 方法。在 show 里,WriteLine 写出 ready。然后 show 结束,Main 里没有剩余工作,程序结束。本页你没有把 Console.WriteLine("ready"); 放进 Pine。你放在 Badge 下,并用类型名去请求它。

类型与角色

用一张小表把配对读一遍。本页上每个类都有一项工作。

📊 type beside role

Type Role on this page
Badge type that holds show
Pine program that holds Main

常见混淆是:show 只存在于 Badge 时,却在 Pine 里不带 Badge. 前缀写 show();。编译就会在 Pine 里找 show 却找不到。另一种混淆是:只把 Main 放在 Badge 上并从 Pine 删掉,却仍期待旧的启动形状——为本课保留文件请把 Main 留在 Pine 上。残留的递归演示会搅乱 Main。学这两种类型的形状时,把 Main 清到只剩 Badge.show();。这里不需要 down。
在 Pine 里写 Console.WriteLine("Badge"); 会打印出词 Badge。它并不调用类型上的方法。当你要的是活在 Badge 里的写出行时,请保持 Badge.show();。

本页还不做什么

本页不写 new Badge()。从类创建对象是下一页。这里的调用是 Badge.show()——在类型名本身上的 static 方法。你也还不在 badge 上存字段。字段留给本模块更后面的页。现在的任务只是启动类旁边的命名类型,以及使用该类型名的调用。
可以把 show 里写出的词改成 set 再运行。屏幕应跟随你放进 Badge 的字符串。Pine 的调用保持不变。这是看清拆分的另一种方式:改类型的方法,保留启动类的调用。
不要把 Badge 嵌进 Pine 的花括号里。本页上两个类在文件里是并列的。Badge 的方法坐在 Badge 里。Main 坐在 Pine 里。

你可以声明 public class Badge,在里面放 static void show(),再从 Pine.Main 调用 Badge.show();。用 dotnet run 运行。屏幕显示 show 写出的那一行。类就是那种命名类型。把 Badge 想成贴了标签的架子,给那些不必启动程序的助手用。Pine 仍是你用 dotnet run 打开的门。下一页是 objects:那里你用 new 从类构造一个值。

屏幕保留 Badge 的写出行

你保留的文件在 Main 调用 Badge.show(); 时写出 ready。名字 Badge 出现在调用里;除非你加了引号,字母 Badge 不会作为打印标签出现在屏幕上。把 Badge 嵌进 Pine 不是本课要建的形状。

🧠 测试您的知识

准备开始

测试您的知识

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

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

📝 说明

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