当前位置: 首页 > news >正文

可以建设个人网站seo专业技术培训

可以建设个人网站,seo专业技术培训,受欢迎的南昌网站建设,四川住房与城乡建设厅网站题外话:别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。 本人女猿一枚,2年工作经验,喜欢钻研,喜欢创新,闲暇之余喜欢写写博客,深知自身能力薄弱,如表达错误、不当之处请园友们多多…

题外话:别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。

本人女猿一枚,2年工作经验,喜欢钻研,喜欢创新,闲暇之余喜欢写写博客,深知自身能力薄弱,如表达错误、不当之处请园友们多多指出,互相交流。

 

最近在学习lambda表达式,lambda表达式与匿名方法有着密切联系,而匿名方法又离不开委托,索性我就围绕委托 、泛型、匿名方法做个总结,以加深我的理解,总结的内容很基础,希望各位大神看后勿喷。

首先,引用MSDN上的原话解释这几个名词:

委托:是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。

泛型:泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能,使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。

匿名方法:在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。C# 2.0 引入了匿名方法。

要将代码块传递为委托参数,创建匿名方法则是唯一的方法。如果使用匿名方法,则不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。

MSDN解释的挺透彻的了,我就不多嘴了,下面看看具体的实例。

 委托

有了委托,我们就可以把方法当成参数来传递,用委托对象调用它所指向的方法,委托与c++中的指针很相似,但是委托是类型安全的。

首先先看一个例子:

小张委托小明去打热水:

 

//定义一个委托public delegate void GetHotWaterEventHandler();static void Main(string[] args){//声明一个委托对象,并绑定一个方法GetHotWaterEventHandler Getwater = new GetHotWaterEventHandler(MyHotWater);Getwater();//使用委托调用方法
            Console.ReadKey();}//小明打热水方法private static void MyHotWater(){Console.WriteLine("Oh,NO!命苦的我又要去打热水了!");}

 

上面就是一个简单的委托,该委托没有返回值,没有传入参数,实际使用时,委托的返回值和形参要与绑定的方法相同,否则会报错。

由上面的例子可以总结出使用委托的具体步骤:

1.用关键字delegate定义一个委托;

2.声明一个委托对象,并为该委托绑定一个方法;

3.用委托对象去调用所绑定的方法;

以上三步就能实现一个委托,是不是很简单呢?

使用委托要注意:

1)委托和绑定的方法要有相同的参数;

2)用+=或-=实现方法的绑定与解绑;一个委托可以绑定多个方法;

好了,委托就总结到这里,下面总结泛型委托。

三种泛型委托:

首先,我解释下在C#中为什么要使用泛型:

假如我们接到一个方法需求:比较两个参数的大小,并返回较大的一个。但是需求上并没有说明参数的具体类型,需求提供者让写一个通用的方法来实现,

这样,假如没有泛型,我们在写方法时,形参类型就要用object了,因为object是所有类型的基类,用object肯定不会出错;但是我们仔细想想,假如用户

输入的参数是int型的,这样在用我们的方法时,就会出现装箱操作,返回时又需要进行一次拆箱操作,这样反复的装箱、拆箱操作会大大降低系统的性能,

因此,我们需要一种通用的类型——泛型,来解决出现的这个问题。

编程时,使用泛型能提高代码的重用度,提高系统性能,提高代码的安全性。

好了,聪明的大家应该明白为什么使用泛型了,下面开始总结三种泛型委托。

1.predicate:

定义:public delegate  bool Predicate<in T>(T obj);

这种委托返回值必须为bool型,可传入一个T类型参数;

代码实例:

static void Main(string[] args){//注意返回值必须为bool,输入参数只能有一个var value=new Predicate<int>(Compare);bool bvalue = value(7);Console.WriteLine(bvalue.ToString());//输出Tru
            Console.ReadKey();}private static bool Compare(int x){return x > 5;}

2.Action:

定义:public delegate void Action<T>(T obj1,T obj2,.......T obj16);

这种委托可以传入最多16个参数,但是无返回值;

代码实例:

 static void Main(string[] args){var Test = new Action<int, string, string>(action_Compare);Test(1987, "90后", "非90后");//输出我是非90后Console.ReadKey();}private static void action_Compare(int x, string a, string b){ string result=x>1990?a:b;Console.WriteLine("我是" + result);}

3.Func:

定义:public delegate <T> Func<T>(T obj1,T obj2,........T obj16);

这种委托为了弥补以上两种委托的缺点而出现,它可以传入最多16个T类型参数,返回T类型值;

实例代码:

 static void Main(string[] args){//注意最后一个string是返回类型var Test3 = new Func<int, string, string,string>(func_Compare);Console.WriteLine("我是"+Test3(1987, "90后", "非90后"));//输出我是非90后
            Console.ReadKey();}private static string func_Compare(int x, string a, string b){string result = x > 1990 ? a : b;return result;}

 三种泛型委托介绍完了,最后出场的就是匿名方法了。

匿名方法

拿刚才委托的例子来讲,小张委托小明去打热水,我们专门写了一个小明打热水的方法供委托来调用。假如这个方法我们只会使用一次,而且代码量又特别少,那么专门写一个方法就显得累赘了许多,也增加了系统编码开销,因此c#2.0出现了匿名方法,使用委托时不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。

代码实例:

static void Main(string[] args){//使用匿名方法GetHotWaterEventHandler Getwater = delegate(){Console.WriteLine("Oh,NO!命苦的我又要去打热水了!");};Getwater();//使用委托调用方法
            Console.ReadKey();}

和刚才委托那个代码实例相比,是不是简单了许多呢?

好了,总结完毕,养精蓄锐,准备学习lambda了。

转载于:https://www.cnblogs.com/xhkongblog/p/7844704.html

http://www.lbrq.cn/news/2558683.html

相关文章:

  • 如何对网站进行爬虫宜兴网站建设
  • 安卓app开发环境seo合作代理
  • 建设网站的知识旺道seo工具
  • 产品效果图怎么做出来的网站搜索优化排名
  • wordpress如何增加商品外贸seo
  • 石家庄网站公司推广关键词如何优化
  • 广西桂林天气预报15天查询seo排名赚下载
  • 网站一年续费多少钱想做推广哪个平台好
  • 建设网站的价格杭州网站seo推广
  • 哪个网站上做自媒体最好佛山seo技术
  • 手表设计网站seo专业优化方法
  • 用.net做的网站上海优化网站seo公司
  • 做招聘网站用哪个cms网页制作工具
  • 长沙网页设计培训找沙大计教育预约网址网站优化排名易下拉稳定
  • 深圳网站建站推广公司软文怎么写
  • 网站建设留言板怎么做怎么做好网络营销
  • 房产网站建设的目的广告代理商
  • 域名不转出可以做网站吗百度普通收录
  • 网站建设招标信息百度人工申诉客服电话
  • 德州宁津建设局网站狼雨seo网站
  • top域名的网站google app
  • 购物网站开发django广东seo价格是多少钱
  • xv10相同网站荆州网站seo
  • 盘锦网站建设兰州网络推广关键词优化
  • 做网站简单么营销策略ppt模板
  • 有哪个网站教人做美食庆云网站seo
  • 评网网站建设优化营商环境条例全文
  • 网站中加入企业qqseo百度seo排名优化软件
  • 泰国做那个视频网站google chrome
  • 九江网站排名黄页88网推广服务
  • 人员定位卡人脸智能充电发卡机
  • Git Pull 时遇到 Apply 和 Abort 选项?详解它们的含义与应对策略
  • Mac配置iterm2
  • 论文阅读:《多目标和多目标优化的回顾与评估:方法和算法》
  • 永磁同步电机FOC控制----电流采样的实现
  • AI大模型前沿:Muyan-TTS开源零样本语音合成技术解析