正在加载...

字段

在类 Cup 里放一个名为 fill 的 int 字段。在 Pine 里保留 Main,用 Cup c = new Cup(); 建出一个 cup,用 c.fill = 3; 存一个数,再用 Console.WriteLine(c.fill); 写出该字段。两种类型放在同一教学文件里,这样 dotnet run 仍然简单。用 dotnet run 运行。屏幕应显示一行:3。字段把数据持有在那一个对象上。你通过命名该对象的变量到达它。在对象上存储并读取该值,就是本页要教的内容。请把启动用的公共类名保持为 Pine。

对象上存放数据的位置

在对象那一页,beep 只写出。它不为以后保留数字。字段是类里声明的名字,每个对象可以在其中持有自己的值。new 建出对象之后,你通过对象变量给字段赋值,然后可以写到屏幕上。
打开 Pine 文件。启动类名保持 Pine。本页不重命名启动类。若 Main 里仍全是残留的 c.beep(); 这种 Chip 调用,删掉它。删掉任何残留的 Chip 类。删掉任何 ReadLine 行。你保留的文件不等待键入。
在 Pine 的花括号之外——仍在同一文件里——写下 public class Cup。在类的花括号里写一行字段:int fill;。这第一个框里没有方法。本页的 Cup 里没有 Main。运行前先保存文件。
第一个代码框只显示 Cup,方便你干净地读字段。第二个代码框是保留形状:Pine 给 fill 赋值并写出。

Cup with fill field

csharp
using System;

public class Cup
{
    int fill;
}

Pine 给 fill 赋值,再写出

Pine 保留 public static void Main()。在 Main 里按顺序写三行:Cup c = new Cup();,再 c.fill = 3;,再 Console.WriteLine(c.fill);。第一行建出对象。第二行把 3 存进该对象的 fill。第三行写出已存的数字。本页不调用 c.beep();。那是对象一课。

Pine sets and prints fill

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Cup c = new Cup();
        c.fill = 3;
        Console.WriteLine(c.fill);
    }
}

public class Cup
{
    int fill;
}

从顶部读保留的文件。using System; 准备短名称。public class Pine 是启动类。public static void Main() 是运行时开始的地方。new Cup() 建出一个对象并存进 c。赋值 c.fill = 3 把 3 写入该对象的字段。WriteLine(c.fill) 读同一字段并写出 3。屏幕上的数字是对象上存好的值,不是像 "ok" 那样硬编码打印的字符串。
用 dotnet run 运行。程序写出一行后停止。它不等你键入。若 dotnet run 在等待,文件里仍有 ReadLine。删掉那一行,在 Pine 里保留上面三行,并把 fill 字段留在 Cup 里。屏幕显示 3。若屏幕显示 ok,残留的 c.beep(); 调用仍在运行。若屏幕显示字母 Cup,写出行带了引号:Console.WriteLine("Cup");。屏幕行不对时,不要重装 .NET SDK。
再按顺序走一遍运行。C# 从 Pine.Main 开始。第一条语句用 new Cup() 建出一个对象并存进 c。第二条把 3 存进 c.fill。第三条写出该字段。然后 Main 结束。字段名 fill 在类里只声明一次。从 Cup 建出的每个对象都为该名字得到自己的槽位。当你写 c.fill 时,先命名对象,再命名该对象上的槽位。这个顺序——对象,然后字段——就是本页保持的形状。

类、对象与字段并排

把三个名字在小表里读一遍。本页上字段行总是经过一个对象。

📊 class object field

Name What it is on this page
Cup the class / type beside Pine
c one object built with new Cup()
c.fill the int stored on that object

没有对象就写 Cup.fill = 3;,不符合本页的初学者形状。字段在 new 之后属于每个对象。先建出,再通过变量赋值。只写 new Cup(); 却不保存结果,也留不下 fill 的名字。请保留 Cup c = new Cup(); 再 c.fill = 3;。
残留的对象演示会搅乱 Main。仍带着 Chip 类调用 c.beep(); 的文件是上一课。为本页请保留 Cup 与 Pine 以及 fill 字段。这里不需要 beep。
若只写 Console.WriteLine(c);,屏幕不会显示干净的 3。它打印默认的对象文本。要看已存的数字,请写 Console.WriteLine(c.fill);。

两个 cup 各自保留 fill

你可以从 Cup 建出两个对象。每个有自己的 fill。改一个不会改另一个。
在 Pine 里可以写 Cup a = new Cup(); 和 Cup b = new Cup();,再 a.fill = 2; 和 b.fill = 9;,然后写出 a.fill 与 b.fill。dotnet run 之后,屏幕应一行显示 2,下一行显示 9。两个对象共享声明 fill 的类文本,但每个对象持有自己的数字。
若你本意是两个不同数字,两次写出却显示相同值,请检查是否给两个字段都赋了值,以及是否写了 Cup b = a;。那一行让 b 指向与 a 相同的对象,于是两个名字共用一个 fill。本页若要两个分开的 fill,就写两个 new Cup() 表达式。
那个练习不需要第三个代码框。仔细编辑 Pine 再运行。然后若想回到测验的第一种形状,可以恢复单 cup 框。

构造函数稍后会加什么

本页在 new 之后用单独一行给字段赋值:c.fill = 3;。后面一页——构造函数——会展示在对象建出时设置起始值的另一种方式。这里请留在普通字段和 new 之后的赋值。本页不要发明构造方法。
从未赋值的字段有默认值:int 字段从 0 开始。若在任何赋值之前写 c.fill,屏幕可能显示 0。本页仍教你自己写出的赋值,所以在主演示里请把 c.fill = 3; 放在写出之前。
不要把 Cup 嵌进 Pine 的花括号里。本页上两个类在文件里是并列的。字段坐在 Cup 里。Main 坐在 Pine 里。若编译 Pine 时找不到 Cup,检查 public class Cup 是否在同一文件。若你期待 3 而屏幕显示 0,赋值行可能缺失,或跑在写出之后——把 c.fill = 3; 放在 Console.WriteLine(c.fill); 上面。

你可以在 Cup 里声明 int fill;,用 Cup c = new Cup(); 建出,赋值 c.fill = 3;,再从 Pine.Main 写出 c.fill。用 dotnet run 运行。屏幕显示 3。两个对象可以持有两个不同的 fill。把 fill 想成你用 new 建出的每个 cup 上贴了标签的槽位。Pine 仍是你用 dotnet run 打开的门。下一页是构造函数:那里你开始在 new 建出对象的那一刻设置值。

🧠 测试您的知识

准备开始

测试您的知识

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

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

📝 说明

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