自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#的函數指針數組

開發(fā) 后端
本文介紹C#函數指針數組,在C++和Delphi中我們可以用C#函數指針數組來很好的解決這個問題。那我們在C#數組是不是也可以這樣去解決這個問題呢?答案是肯定的。

在向大家詳細介紹C#數組之前,首先讓大家了解下C#函數指針數組,以后全面介紹C#數組。

在大家開發(fā)網絡通訊軟件的時候,應該都碰到過這種情況,在定義好通訊協(xié)議后要在程序中實現協(xié)議相應的功能。如:

一個聊天程序有如下定義:
1……登陸
2……獲取好友列表
3……修改自己資料


N……退出

每個功能由如下C#函數指針數組實現:
登陸
Void Login(UserIinfouser,Messagemsg);
獲取好友列表
void GetFriendList(UserInfouser,Messagemsg);
修改自己資料
void ModifySelfInfomation(UserInfouser,Messagemsg);


退出
Void Logout(UserInfouser,Messagemsg);

那現在我們要將它一一對應起來,我們該怎么做呢?很多人也許會這樣做

  1. publicstaticvoidAnalyze(UserInfouser,Messagemessage)  
  2. ...{  
  3. switch(msg.Class)//Class是協(xié)議的類型標志,下同  
  4. ...{  
  5. case1:  
  6. Login(user,message);  
  7. break;  
  8. case2:  
  9. GetFriendList(user,message);  
  10. break;  
  11. case3:  
  12. ModifySelfInfomation(user,message);  
  13. break;  
  14. …  
  15. caseN:  
  16. Logout(info,msg);  
  17. break;  
  18. default:  
  19. break;  
  20. }  

這樣做看起來沒有什么不妥。但是……如果協(xié)議條數非常多或者說很復雜呢?比如說:我的協(xié)議是二級甚至是三級分類的呢?用更多的switch和case?這樣顯然不是一個好主意。在C++和Delphi中我們可以用C#函數指針數組來很好的解決這個問題。那我們在C#是不是也可以這樣去解決這個問題呢?答案是肯定的。我們可以在C#中用委托數組來解決這個問題。

讓我們先定義一個C#委托和C#數組:

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

然后將C#函數指針數組都放到這個C#數組里:

  1. MainAnalyzer=newAnalyzerHandler[]  
  2. ...{  
  3. Login,  
  4. GetFriendList,  
  5. ModifySelfInfomation,  
  6. …  
  7. Logout  

那我們怎么調用呢?很簡單,這樣就行了!

  1. publicstaticvoidAnalyze(UserInfouser,Messagemessage)  
  2. ...{  
  3. if(message.Class>MainAnalyzer.Length||message.Class<0)//檢查Class  
  4. 有沒有超出有效范圍  
  5. return;  
  6. MainAnalyzer[message.Class-1](user,message);//因為協(xié)議是從1開始  
  7. 而數組的下標是從0開始的,所以我們要在協(xié)議類型減去1  

【編輯推薦】

  1. C#在應用程序間發(fā)送消息實現淺析
  2. 一些C#時間類型的入門知識
  3. C#接口和抽象類技術特點淺析
  4. 一個C#時間計算的實例
  5. C#繼承知識詳解
責任編輯:佚名 來源: IT168
相關推薦

2009-09-16 09:00:15

C#數組C#指針

2009-09-27 11:14:09

C#數組

2009-07-31 14:20:46

結構數組C#函數的參數

2011-07-20 17:54:02

C++

2009-08-07 09:29:22

C#數組C#函數

2009-08-18 17:29:02

C#使用指針

2010-02-01 13:08:46

C++函數指針C#托

2021-01-13 06:58:35

C語言函數指針

2010-01-18 17:23:55

函數

2011-07-15 01:20:58

C指針函數函數指針

2024-03-28 18:12:28

指針函數指針C++

2009-08-21 15:16:23

C#使用指針

2009-08-13 15:48:57

C#指針

2009-08-03 17:12:40

C#指針操作

2009-09-02 10:58:02

C#動態(tài)數組

2009-08-18 17:37:57

C#固定指針

2009-07-30 15:24:13

C#析構函數C#構造函數

2010-01-18 17:23:55

函數

2010-01-18 17:23:55

函數

2009-09-17 17:13:54

C#數組
點贊
收藏

51CTO技術棧公眾號