Files
xuyueandClaude Opus 5.5 de277d3e9d
CI/CD / test (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s
用 bun fmt 格式化全部代码和文档
- bunfig.toml 的 [fmt]:不写分号、单引号、一行最长 160,和原来的写法一致
- .prettierignore:docs/教材摘要/ 是书上的摘录,不格式化
- 模板里一行写两条语句的事件处理(@keydown.delete、@dblclick)改成调用方法:去掉分号后拆成两行,Vue 编译不过

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 14:02:33 +08:00

3.2 KiB
Raw Permalink Blame History

任务目标

一个窗体里做两件事:上半部分是简易计算器,输入两个数、选运算符,点"="算出结果;下半部分点"显示",让两个中国人、两个美国人依次"说话",在文本框里输出各自说的语言。

练习重点:装箱与拆箱(object 和值类型互相转换)、类的继承、虚方法(virtual)和重写(override)、List 和 Dictionary。详细步骤见书 p13–16。

界面和控件名

控件 名称(Name) 文字(Text)和用途
窗体 Form1 C#入门基础
分组框 groupBox1 简易计算器
文本框 txtNum1 第一个数
下拉框 cmboxType 运算符,Items 填 +、-、*、/ 四项
文本框 txtNum2 第二个数
按钮 btnCalculate =
文本框 txtResult 计算结果,ReadOnly 设为 True
分组框 groupBox2 类的多态性
文本框 txtDispaly 输出说话内容,Multiline 设为 True
按钮 btnDisplay 显示

txtDispaly 是书上的拼法(不是 Display),代码和自动评分都用这个名字,照着写。书上的表格没写下拉框的 Items 和文本框的 Multiline,要自己在属性里设置。

实现步骤

  1. 写一个方法 public Object Result(Object a, Object b, String type):先把 a、b 拆箱成 float,用 switch 按 + - * / 计算(其他情况结果为 0),最后把结果装箱成 Object 返回。
  2. btnCalculate 的 Click:两个文本框都不为空时,用 float.Parse 把文字转成数,调用 Result(a, b, cmboxType.Text),返回值拆箱成 float,显示到 txtResult。
  3. 点"+ 新建类",新建 People 类,写一个虚方法 public virtual void Speak(TextBox Txtbox, string name),把 name 追加到文本框的 Text 后面。
  4. 新建 Chinese 类继承 People,重写 Speak:调用 base.Speak,传入 name + "说的是汉语!\r\n"。
  5. 新建 American 类继承 People,同样重写,内容改成"说的是英语!"。
  6. btnDisplay 的 Click:
    • 建一个 Dictionary<int, string>,放入 1 张三、2 李四、3 Mary、4 Jimmy;
    • 建一个 List<People>,先加 2 个 new Chinese(),再加 2 个 new American();
    • 遍历 List,对第 i 个对象调用 Speak(this.txtDispaly, dicName[i + 1])。

和书上不一样的地方

书上第 8 步写的是"双击'='按钮",其实应该双击"显示"按钮,生成 btnDisplay_Click。

书上排版把减号印成了长一点的"–",抄 case "-" 和下拉框的 Items 时要用键盘上的减号,否则选"-"时算不出来。

在平台上怎么试

  1. 运行后输入 7 和 2,选"+",点"=",结果应为 9;改选"/"再点"=",结果应为 3.5。
  2. 点"显示",文本框里应依次出现"张三说的是汉语!""李四说的是汉语!""Mary说的是英语!""Jimmy说的是英语!"四行。