All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
asp.net,将文字内容和图片插入到Access_[Asp.Net教程]
C#网络应用编程基础练习题与答案(十)_.net资料_编程技术
实例学习PHP之投票程序篇_php资料_编程技术
ASP.NET,2.0使用user,profile储存信息前,如何部署aspnetdb.mdf和连接_[Asp.Net教程]
.NET,vs,J2EE——面对SOA的荒谬与误解_.net资料_编程技术
HTML网页制作基础教程(1):认识HTML_[Html教程]
PHP技巧:PHP脚本编程中的文件系统函数库_php资料_编程技术
浅析SQL,Server全文检索查询_mssql学习_编程技术
visual c++中标签控件(Tab Control)
delphi组件的分类
Reading number is top 10 pictures
The woman fight much more than men
Black and white also sexy--YanLiu1
Go to the national museum3
No trading, no killing
做运动的校花1
The real super beauty13
The mother was a stay-at-home children too tired took three baby suicide
Terrorist smile the largest human history an explosion1
Magnificent cloud1
梦幻的风景
Download software ranking
艳兽都市
Boxer's Top ten classic battle2
功夫熊猫2(上集)
VC++6.0培训教程
Unix video tutorial5
I for your crazy
Tram sex maniac 2 (H) rar bag13
I'm come from Beijing2
VeryCD电驴(EasyMule) V1.1.9 Build09081
Boxer vs Yellow4
delv published in(发表于) 2014/1/6 9:05:58 Edit(编辑)
C#中Delegate浅析与思考_[Asp.Net教程]

C#中Delegate浅析与思考_[Asp.Net教程]

C#中Delegate浅析与思考_[Asp.Net教程]

1. 什么是托管函数


托管函数是一个对类里面的某个函数的一个引用.它自己并没有具体的函数定义,只是指向某个函数实现.


2. 与C++, Delphi的横向比较


在C++和Delphi中与托管函数对应的类型是函数指针,形式如下:


C++


typedef (int GetNum)(real rNum);


Delphi


function GetNum(rNum:real): integer; external;


这里定义函数指针,他们所能指向的函数定义的传入参数必须是实型,传出为整形


3. 托管函数有什么用


由于托管函数是对类里面某个函数的一个引用.所以我们不必知道这个函数的具体名字是什么,而只需要调用托管函数,让托管函数去调用相应的函数就可以了. 一个例子: 一个公司,一个领导,一个领导秘书,三个员工分别管理市场,策划和生产.这里秘书就相当与一个托管函数, 领导要下达什么命令(获得市场信息,生产什么产品),只需要对秘书说给我一份市场报告或者我们不生产原子弹转向生产氢弹.然后再由秘书根据领导的命令选择的去找哪个员工,再把员工获得的信息返回给领导. 这里面三个员工对于领导是透明的,领导并不知道自己下达的命令具体是由谁执行的.


4. 如何定义&&如何使用


接着上面的例子,我们声明一个秘书托管函数原型


class Secretory


{


//定义托管函数原型


private delegate string Do(string command);


//创建托管函数实例


public Do Doit;


//给秘书下达命令执行


public void ExecuteCommand(string command)


{


switch(秘书根据命令判断是要给谁执行的)


{


case 调研市场的人:


Doit=new Do(new MarketMan().GetMarketInfo);


Break;


Case 生长产品的人:


Doit=new Do(new ProductMan().ProduceProduct);


Break;


Default:


Break;


}


}


Doit(command);


}


///调研市场的那个人的类


class MarketMan


{


public string GetMarketInfo(string command)


{ 根据命令调查信息, 返回获得信息 ;}


}


///生产产品的人


class ProductMan


{


public static string ProduceProduct(string command)


{ 根据命令生产产品,并返回生产工程中的信息;}


}


ok,那么如何执行呢?老板怎么使用Secretory这个类呢?


go on


老板只需要把秘书叫(new)过来,直接向他下达命令,然后就可以喝茶去了~ ^_^


class Boss


{


public void static main()


{


(new Secretory()).Doit(“我们要生产氢弹,把以前的原子弹都扔到日本好了”);


}


}


5. 其他


正入你们所见的,上面的两个类中的方法,一个是静态,一个不是静态的. 托管函数所指的函数可以静态的也可以不是静态的.


来源:网络







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.