从语言进化角度理解c#(委托篇)

c#1 是在2002年初的时候发布的,目前开发语言有很多,我个人还是觉得c++,java,c#算是老大哥级别,天下游戏一大抄,其实语言也是一样。虽然每个语言的设计者都不一样,但大家的核心思想还是比较接近的(大家都是互相抄的)

 

那么在c#1时代,最具代表性的几个语言特点是什么呢。我觉得有下面几个:

1:委托

2:属于c#的类型系统

3:值与引用,两种类型所涉及的托管与非托管机制

4:元表与反射

5:接口

 

 

不急不急,那我们来一个个聊,

 

先来聊聊第一个。委托是什么东西:

委托,一言以蔽之:

他是一个对象(好像没说一样)

是个什么对象呢:是一个可以同步又可以异步,而且内部会有一个调用链进行调用方法维护的,支持多路广播的,泛型的一个用于调用方法的对象 ……(好累)

 

那归根结底,他是用来调用方法的。那有人会问,我调个函数不就也一样调用方法了么,那差别就大了,首先我前面就说过了,天下语言一大抄,在设计之初,很多人觉得c#的委托不是和c++的函数指针差不多么,好的,如果你这么理解也没错(只是有点肤浅而已),他是一个提供了间接的方法,也就是说他不需要直接指定一个行为执行,而是封装这个行为包含在一个对象中,这个对象就像其它对象一样使用,而且这个对象可以封装,也可以看做一个方法的接口,将委托的实例看做实现了那个接口的一个对象。

 

有人说这话好难理解,那我来简单举个栗子你就明白了:

有一天阳光明媚,我带着我的狗出去散步,突然发现了一个漂亮MM,但是我这么高贵怎么可能亲自出马呢。于是!就“委托”了我的萌萌的大金毛去找MM要微信号(在它脖子上挂个牌子:好想认识你,请把微信号留给我吧),然后我的大金毛就聪明的过去啦。我想肯定比我亲自出去要成功率高吧,呀!刚才谁说的?谁说人不如狗的?

 

那我们来看看代码怎么写:

首先声明一个委托类型:

/* 委托类型这样: * 要所得一个字符串(这里就是MM的微信,当然以后也可能是别的,主要看委托谁)
 * 有一个形参与是字符串(这里是挂在狗脖子上的牌子上的字) */ 
delegate string getSomeThingWithMsg(string msg);

那下面是我的狗(对象)所包含的行为:

class Dog{ 
    //这里方法我就不做具体实现了 
    public AnimalSound Yap();//狗叫,返回一个AnimalSound的类(假定有这个类) 
    public void Sleep();//没有返回值的睡觉方法 
    public void Eat(Food food);//带有一个形参的进食方法 
    public string FoundSomething(string msg);//金毛巡回犬当然要找东西啦。msg是要找的东西,返回一个巡回的结果 
}

 

 

c#中委托实例需要一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值