一、实验目的

  1. 掌握C#中各种成员的写法;
  2. 掌握C#继承和多态概念;
  3. 掌握常用接口的使用方法。

二、实验内容

  1. 运用委托知识,完成以下程序:

有下面两个类,代表电视和电灯,设计两个委托,在Program类的Main函数中,同时打开电视和电灯,再同时关闭它们。

    class TV{public void on(int channel){Console.WriteLine("电视已打开,在看" + channel + "频道");}public void off(){Console.WriteLine("电视已关闭");}}class Lights{static bool[] light = new bool[5];public static void turnon(int no){if (no >= 1 && no <= 5){light[no - 1] = true;Console.WriteLine("已经开了" + no + "号灯");}}public static void turnoff(){for (int i = 0; i < 5; i++)light[i] = false;Console.WriteLine("电灯已全部关闭");}}

源代码

using System;namespace Homework16
{class TV{public void on(int channel){Console.WriteLine("电视已打开,在看" + channel + "频道");}public void off(){Console.WriteLine("电视已关闭");}}class Lights{static bool[] light = new bool[5];public static void turnon(int no){if (no >= 1 && no <= 5){light[no - 1] = true;Console.WriteLine("已经开了" + no + "号灯");}}public static void turnoff(){for (int i = 0; i < 5; i++)light[i] = false;Console.WriteLine("电灯已全部关闭");}}public class Controller{//定义字段private TV tv;private Lights lights;//构造函数public Controller() { }//定义委托类型startMachine ,返回值为Void。//所以要求委托指向的方法返回值也为空//delegate关键字相当于类类型的class关键字public delegate void startMachine(int number);//声明一个stopmMachine类型的对象public startMachine startmachine;//添加委托//定义委托类型stopMachine ,返回值为Void, stopMachine()的参数列表为空。//所以要求委托指向的方法返回值也为空,参数列表也为空。//delegate关键字相当于类类型的class关键字public delegate void stopMachine();//声明一个stopmMachine类型的对象public stopMachine stopmachine;//添加委托public void Add(startMachine startmethod,stopMachine stopmethod){   //实例化对象this.startmachine += startmethod;this.stopmachine += stopmethod;//相当于//stopmachine = new stopMachine(tv.shutTV);//stopmachine = new stopMachine(computer.shutComputer);//stopmachine = new stopMachine(light.shutLight);}//删除委托public void ReMove(startMachine startmethod,stopMachine stopmethod){this.stopmachine -= stopmethod;this.startmachine -= startmethod;}//调用委托public void open(int number){startmachine(number);}//调用委托public void shut(){stopmachine();}}class Program{static void Main(string[] args){//实例化类Controller controller = new Controller();TV tv = new TV();Lights light = new Lights();//添加委托controller.Add(tv.on,tv.off);controller.Add(Lights.turnon, Lights.turnoff);//调用委托Random random = new Random();controller.open(random.Next(1,5));controller.shut();Console.ReadKey();}}
}

运行结果

三、实验心得与体会

  1. 掌握C#中各种成员的写法;
  2. 掌握C#继承和多态概念;
  3. 掌握常用接口的使用方法。

参考文章

https://www.cnblogs.com/zcttxs/archive/2012/06/24/2560154.html

https://shentuzhigang.blog.csdn.net/article/details/105022881

https://www.cnblogs.com/Jeffrey-Chou/p/11907530.html

C#——《C#语言程序设计》实验报告——继承与多态——电视和电灯委托相关推荐

  1. c语言程序设计实验报告2,C语言程序设计实验报告2.docx

    C语言程序设计实验报告2.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该 ...

  2. c 语言差错编码实验结果,C语言程序设计实验报告(四).doc11111111111111111.doc

    C语言程序设计实验报告(四).doc11111111111111111 C语言程序设计实验报告 姓 名吴文重学 号52系 别数学系班级2班主讲教师徐时芳指导教师徐时芳实验日期2011-11-8专业10 ...

  3. c语言选择循环实验报告,C语言程序设计实验报告选择与循环结构程序设计.doc

    C语言程序设计实验报告选择与循环结构程序设计.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的 ...

  4. c语言的简单程序设计实验报告,工程学院C语言程序设计实验报告

    <工程学院C语言程序设计实验报告>由会员分享,可在线阅读,更多相关<工程学院C语言程序设计实验报告(5页珍藏版)>请在人人文库网上搜索. 1.南京工程学院实验报告课程名称C 语 ...

  5. c语言程序设计植树,C语言程序设计实验报告——实验

    C语言程序设计实验报告--实验 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  6. c语言程序设计数组实验报告,(C语言程序设计实验报告数组.doc

    (C语言程序设计实验报告数组 <C语言程序设计 >课程实验报告 实验名称 学 号_ 姓 名 ___ 班 别 实验日期: 年月日 实验报告日期: 年月日 指导老师: 实验地点: 成 绩: 评 ...

  7. c语言程序设计数组实验报告,c语言程序设计实验报告(数组).doc

    c语言程序设计实验报告(数组).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3 ...

  8. c语言指针部分上机,北科大C语言程序设计实验报告8-指针-练习题代码(2次上机课内容)--...

    北科大C语言程序设计实验报告8-指针-练习题代码(2次上机课内容)-- 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文 ...

  9. c语言程序设计的实验报告,C语言程序设计实验报告

    以下为<C语言程序设计实验报告>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. 湖南科技大学 2019-2020第 ...

最新文章

  1. Nat. Commun | 用于全基因组药物重定位的系统网络算法
  2. linux 错误 kernel panic not syncing vfs unable to mount root fs on unknown-block 0 0
  3. vuecli3 引入全局scss变量_vue-vue-cli3 sass全局变量配置
  4. python流行的爬虫框架_Python爬虫相关框架
  5. make,makefile,cmake“暴力编译法”的个人经验或理解。
  6. sdk数值与android版本,Android SdkVersion的区别及获取版本信息方法
  7. 敲黑板!vue3重点!一文了解Composition API新特性:ref、toRef、toRefs
  8. BUG_ON()、panic()、dump_stack()几种内核调试手段
  9. 【多题合集】网络流24题练习(更新至魔术球问题)
  10. python表单验证_python表单验证封装
  11. Unity 2D角色复活点与复活等待时间设置
  12. 动态组合sql语句详解
  13. Linux - 增加用户、添加用户组
  14. win10系统无打印机服务器,win10打印机后台程序服务没有运行该如何解决?
  15. UnavailableInvalidChannel: The channel is not accessible or is invalid. channel name: conda-forg ch
  16. 杂项工具WinHex
  17. 农历 Android Java 节气_Android自定义日历,可以点击、标注日期、节气、旧历等
  18. 英语语法篇 - 从句
  19. java 两个list合并
  20. 《程序员》10月刊推荐 LBS:签到背后的百亿市场

热门文章

  1. C语言程序设计 练习题参考答案 第七章 (2) 指针与数组 main函数形参
  2. python连接oracle进行监控_使用Python脚本zabbix自定义key监控oracle连接状态
  3. Java自动拆装箱面试_跟王老师学泛型(二):Java自动装箱与拆箱
  4. php 26个字母大写,英语26个字母大小写怎么写
  5. cwntos新建目录挂载磁盘_centos6修改挂载磁盘目录的方法
  6. android开发标签栏应该设置多少钱,android – Flutter:刷卡后默认标签栏控制器......
  7. C语言有符号整数最小值,16位带符号整数为什么是
  8. namefilter 前台反斜杠格式_001获取小猴子的信息并格式化输出
  9. 饥荒海难机器人怎么用_饥荒开发商又一款神作,难到吐血的生存游戏!
  10. Sun公司因为不懂销售和运营,导致陨落,最终软件还是打败了硬件