电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

课程6+上课日志1

9页
  • 卖家[上传人]: y****g
  • 文档编号:131873021
  • 上传时间:2020-05-10
  • 文档格式:DOC
  • 文档大小:60KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、课程6 委托、匿名方法、Lambda表达式、Linq查询表达式上课日志1一、委托的基本认识提问:能不能把方法作为参数传递?也即是能不能声明一个能存放方法的变量呢委托。委托是一种数据类型,像类一样(可以声明委托类型变量),委托是用来接受方法的,通过委托可以把方法作为参数进行传递。namespace _01委托的基本认识 /1.定义委托类型。定义一个委托类型(委托是一种数据类型,能接受方法的数据类型),用来保存无参数,无返回值的方法 /委托最好要定义在命名空间中,和类是同一个级别 public delegate void MyDelegate();/也像定义抽象方法一样,没有实现(方法体) / public class MyClass /这是定义一个类 class Program /void Run();/定义抽象方法 /string Test();/定义抽象方法 static void Main(string args) /2.使用委托第二步:声明委托变量,并赋值 /声明了一个委托变量md,并且new了一个委托对象,并且把方法M1传递了进去 /即md委托保存了M1方法 /MyClass

      2、mc=new MyClass(); /MyDelegate md = new MyDelegate(M1);/第1种写法 MyDelegate md = M1;/第2种写法 /3.调用md委托的时候就相当于调用M1方法 md();/与下面那就等同 /md.Invoke();/Invoke()的作用是执行指定的委托 Console.WriteLine(ok); Console.ReadKey(); static void M1() Console.WriteLine(我是一个没有参数没有返回值的方法); 二、委托的基本应用举例1需求:假设一件事情在前面和后面要做的事情比较固定(这里假设输出“=”),但是中间要做的事情经常发生变化(比如1.要输出系统当前时间到控制台,2.要输出系统当前是星期几,3.要把系统时间写入到文本文件等)namespace _02委托的基本应用 /定义一个委托 public delegate void middleDelegate(); public class TestClass public void DoSomething(middleDelegate mid

      3、dleThing)/委托类型作为参数,也即是调用此方法要传递一个方法进来 Console.WriteLine(=); Console.WriteLine(=); /执行完第二句代码,输出下系统时间 /Console.WriteLine(System.DateTime.Now.ToString(); if (middleThing != null)/委托是一个对象,就有可能为null,所以先判断下是否为null middleThing (); Console.WriteLine(=); Console.WriteLine(=); namespace DelegateApp1 class Program static void Main(string args) TestClass tc = new TestClass(); tc.DoSomething(PrintTimeToConsole); Console.ReadKey(); public static void PrintTimeToConsole() Console.WriteLine(System.DateTime.Now.T

      4、oString(); static void writeTimeToFile() File.WriteAllText(time.txt, System.DateTime.Now.ToString(); public static void PrintWeekToConsole() Console.WriteLine(System.DateTime.Now.DayOfWeek.ToString(); 三、委托的基本应用举例2与总结从上例可以看出委托一般是在一个方法(1)的一大段程序中间“挖个坑”,这个坑用来执行另一个方法(2),而这个方法(2)是动态的,可以根据需要调用不同的方法到方法(1)中。需求:对字符串的处理经常要发生变化,比如在字符串两端加“=”、加“”,把字符串字母全部转换为大写。namespace _03委托的基本应用练习与总结 /定义一个委托(委托是一种数据类型,接受方法的数据类型) public delegate string GetStringDelegate(string str); public class TestClass public void ChangeS

      5、trings(string strs, GetStringDelegate GetString) for (int i = 0; i strs.Length; i+) strsi = GetString(strsi);/由于对字符串的需求有很多种,所以把对字符串变化部分用委托封装成一个方法 static void Main(string args) TestClass tc = new TestClass(); string names = new string ZhangSan, LiSi, WangWu, LaoLiu ; /*下面就可以调用含有委托的方法,如果需要在字符串两端加,就调用ChangesStrings2方法 /如果需要把字符串的字母转换为大写,就调用ChangesStrings3方法,这样就灵活了*/ /tc.ChangeStrings(names, ChangesStrings1);/应用需求1 /tc.ChangeStrings(names, ChangesStrings2);/应用需求2 tc.ChangeStrings(names, ChangesString

      6、s3);/应用需求3 /把变化后的字符串数组中的字符串输出 for (int i = 0; i names.Length; i+) Console.WriteLine(namesi); Console.ReadKey(); static string ChangesStrings3(string str)/需求3:把字符串中字母转换为大写 return str.ToUpper(); static string ChangesStrings2(string strs)/需求2:在字符串两端加 return + strs + ; static string ChangesStrings1(string strs)/需求1:在字符串两端加 return = + strs + =; 委托认识的总结:委托是一种数据类型,像类一样的一种数据类型。一般都是直接在命名空间中定义。定义委托时,需要指明返回值类型、委托名与参数列表,这样就能确定该类型的委托能存储(接受)什么样的方法。使用委托(1)声明委托变量(2)委托是一个引用类型,就像类一样,所以当声明委托变量后,如果不赋值则该委托变量为null。所以在使用委托变量前最好做非空校验if(weituo!=null)四、泛型委托Action与Action1、Action委托(非泛型版本)例1 :public delegate void Mydelegate(); class Program static void Main(string args) Mydelegate md = new Mydelegate(M1); md(); /系统内置了三种委托,像这种委托就可以用系统内置委托Action,完全不用自已写。Action委托就是一个无参数无返回值的委托(非泛型版本) Action action = M1; action(); Console.ReadKey(); static void M1() Console.WriteLine(ok); 2、自己写泛型委托例2:如果自己写非泛型委托:需要保存一个string类型参数,但无返

      《课程6+上课日志1》由会员 y****g分享,可在线阅读,更多相关《课程6+上课日志1》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.