网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C#的函数指针数组的用法

本篇内容主要讲解“C#的函数指针数组的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#的函数指针数组的用法”吧!

创新互联专注于企业成都营销网站建设、网站重做改版、建邺网站定制设计、自适应品牌网站建设、H5建站商城建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为建邺等各大城市提供网站开发制作服务。

在向大家详细介绍C#数组之前,首先让大家了解下C#函数指针数组,以后全面介绍C#数组。

在大家开发网络通讯软件的时候,应该都碰到过这种情况,在定义好通讯协议后要在程序中实现协议相应的功能。如:

一个聊天程序有如下定义:
1……登陆
2……获取好友列表
3……修改自己资料


N……退出

每个功能由如下C#函数指针数组实现:
登陆
Void Login(UserIinfouser,Messagemsg);
获取好友列表
void GetFriendList(UserInfouser,Messagemsg);
修改自己资料
void ModifySelfInfomation(UserInfouser,Messagemsg);


退出
Void Logout(UserInfouser,Messagemsg);

那现在我们要将它一一对应起来,我们该怎么做呢?很多人也许会这样做

publicstaticvoidAnalyze(UserInfouser,Messagemessage)  ...{  switch(msg.Class)//Class是协议的类型标志,下同  ...{  case1:  Login(user,message);  break;  case2:  GetFriendList(user,message);  break;  case3:  ModifySelfInfomation(user,message);  break;  …  caseN:  Logout(info,msg);  break;  default:  break;  }  }

这样做看起来没有什么不妥。但是……如果协议条数非常多或者说很复杂呢?比如说:我的协议是二级甚至是三级分类的呢?用更多的switch和case?这样显然不是一个好主意。在C++和Delphi中我们可以用C#函数指针数组来很好的解决这个问题。那我们在C#是不是也可以这样去解决这个问题呢?答案是肯定的。我们可以在C#中用委托数组来解决这个问题。

让我们先定义一个C#委托和C#数组:

private delegate void AnalyzerHandler(UserInfo user, Message message);
static AnalyzerHandler[] MainAnalyzer;

然后将C#函数指针数组都放到这个C#数组里:

MainAnalyzer=newAnalyzerHandler[]  ...{  Login,  GetFriendList,  ModifySelfInfomation,  …  Logout  }

那我们怎么调用呢?很简单,这样就行了!

publicstaticvoidAnalyze(UserInfouser,Messagemessage)  ...{  if(message.Class>MainAnalyzer.Length||message.Class<0)//检查Class  有没有超出有效范围  return;  MainAnalyzer[message.Class-1](user,message);//因为协议是从1开始  而数组的下标是从0开始的,所以我们要在协议类型减去1  }

到此,相信大家对“C#的函数指针数组的用法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站标题:C#的函数指针数组的用法
网站URL:http://bjjierui.cn/article/pgohgh.html

其他资讯