成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析C#組件設(shè)計(jì)的四種方法

開發(fā) 后端
C#組件設(shè)計(jì)將在這里為大家呈現(xiàn)四種不同的方法,希望對(duì)大家有所幫助。
C#組件設(shè)計(jì)應(yīng)該注意事件處理是組件設(shè)計(jì)中相當(dāng)重要的一環(huán),在C#中事件與delegate是緊密相關(guān)的。希望本文能對(duì)C#組件設(shè)計(jì)有所幫助。

在C#中為類預(yù)定義屬性是件再簡(jiǎn)單不過(guò)的事,見程序1。

程序1

  1. using System;  
  2. namespace PropertiesDemo  
  3. {  
  4.  public class MyData  
  5.    
  6.  public class Class1  
  7.  {  
  8.   private MyData _data;  
  9.   public MyData Data  
  10.   {  
  11.    get { return _data; }  
  12.   }  
  13.   public Class1()  
  14.   {  
  15.    _data = new MyData();  
  16.   }  
  17.  }  
  18. }  

這是相當(dāng)常見的屬性預(yù)定義方式,同時(shí)也是個(gè)可正常運(yùn)行的程序,不過(guò)其中隱含著一個(gè)設(shè)計(jì)上的問(wèn)題,那就是創(chuàng)建MyData對(duì)象的時(shí)機(jī)。按照程序2-1的手法,當(dāng)Class1對(duì)象被創(chuàng)建之初,其內(nèi)的_data對(duì)象也隨著被創(chuàng)建起來(lái),這造成了Class1對(duì)象于創(chuàng)建初期就付出了一個(gè)MyData對(duì)象的內(nèi)存成本,這對(duì)簡(jiǎn)單的類來(lái)說(shuō)或如牛毛,但倘若Class1對(duì)象中擁有一群這類屬性呢?為了解決這類問(wèn)題,.NET Framework中大量使用Lazy-Allocate(緩分配)技術(shù),見程序2。

程序2 Lazy-Allocate范例

  1. public class Class1  
  2. {  
  3.  private MyData _data;  
  4.  public MyData Data  
  5.  {  
  6.   get  
  7.   {  
  8.    if(_data == null)  
  9.     data = new MyData();  
  10.    return _data;  
  11.   }  
  12.  }  
  13.  public Class1() { }  
  14. }  

Lazy-Allocate的設(shè)計(jì)概念很簡(jiǎn)單,就是未使用前不預(yù)付成本。相對(duì)于程序2-1所使用的Pre-Allocate(預(yù)分配)概念,程序2-2采取以時(shí)間換取空間的策略,付出存取判斷式的代價(jià)來(lái)減輕空間浪費(fèi)的情況。當(dāng)然,Pre-Allocate也不是一無(wú)是處,不須預(yù)判斷的快速存取特色適用于用戶必然會(huì)存取的屬性,但在一些特定的屬性上,例如ASP.NET中常見的Style屬性就不適合使用Pre-Allocate技巧,因?yàn)橛脩舨灰欢〞?huì)使用該屬性,于此情況下,Lazy-Allocate模式說(shuō)可以讓對(duì)象省下一些內(nèi)存成本。

Event

事件處理是組件設(shè)計(jì)中相當(dāng)重要的一環(huán),在C#中事件與delegate是緊密相關(guān)的,程序3是一個(gè)簡(jiǎn)單的事件范例。

程序3 簡(jiǎn)單的事件范例

  1. using System;  
  2. namespace EventDemo  
  3. {  
  4.  public delegate void ProcessHandler(object sender);  
  5.  public class Class1  
  6.  {  
  7.   private event ProcessHandler _processHandler = null;  
  8.   public event ProcessHandler ProcessStart  
  9.   {  
  10.    add  
  11.    {  
  12.     _processHandler += value;  
  13.    }  
  14.    remove  
  15.    {  
  16.     _processHandler -= value;  
  17.    }  
  18.   }  
  19.   public void Process()  
  20.   {  
  21.    _processHandler(this);  
  22.    for(int i = 0; i < 10; i++)  
  23.     i = i+1;  
  24.   }  
  25.   public Class1()  
  26.   {}  
  27.  }  
  28. }  

C#之中delegate扮演著函數(shù)指針的角色,用戶可以將某個(gè)函數(shù)加入一個(gè)delegate之中,而一個(gè)delegate允許用戶加入一個(gè)以上的函數(shù),當(dāng)調(diào)用此delegate時(shí)就等同于調(diào)用其內(nèi)所含的所有函數(shù)。不過(guò)程序2-3的設(shè)計(jì)手法潛藏著一個(gè)問(wèn)題,就是當(dāng)事件數(shù)眾多時(shí),對(duì)象就必須付出相應(yīng)數(shù)量的delegate變量,如程序4所示。

程序4 傳統(tǒng)事件設(shè)計(jì)

  1. private event ProcessHandler _processStart = null;  
  2. private event ProcessHandler _processEnd = null;  
  3. private event ProcessHandler _processStep = null;  

【編輯推薦】

  1. C#數(shù)組和指針全面討論
  2. 簡(jiǎn)單介紹C#數(shù)組和函數(shù)
  3. C#數(shù)組初始化的應(yīng)用實(shí)例解析
  4. 學(xué)習(xí)Visual C#數(shù)組速成法
  5. 淺談C#數(shù)組工作方式
責(zé)任編輯:彭凡 來(lái)源: CSDN
相關(guān)推薦

2009-08-26 15:04:35

C#轉(zhuǎn)換

2009-02-25 09:52:14

類型轉(zhuǎn)換.NET 強(qiáng)制轉(zhuǎn)型

2009-09-24 14:59:38

C#編寫COM組件

2009-08-05 14:09:04

C#日期轉(zhuǎn)換

2009-09-22 14:20:39

C#播放聲音

2014-03-17 09:22:43

Linux命令

2022-09-02 14:29:01

JavaScrip數(shù)組屬性

2009-11-23 15:57:51

PHP偽靜態(tài)

2021-03-10 10:13:39

爬蟲Python代碼

2009-08-20 09:52:31

C#參數(shù)類型

2011-06-22 15:21:08

XML

2020-08-10 00:30:55

備份密碼iPhone移動(dòng)安全

2009-03-31 13:12:30

解析XMLJava

2024-10-24 08:04:00

2022-12-07 10:28:22

2022-11-04 13:35:29

IT遠(yuǎn)程工作混合工作

2009-09-08 17:20:01

C#排序算法

2009-09-18 19:09:41

C# COM組件

2016-06-28 10:19:31

云計(jì)算云安全

2010-07-16 13:50:53

Perl哈希表
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品国产成人国产三级 | 亚洲欧洲小视频 | 91视频入口 | 亚洲 欧美 激情 另类 校园 | 日本亚洲欧美 | 国产精品久久久久久久免费大片 | 色吊丝2| 亚洲精品美女视频 | 成人免费网站www网站高清 | av黄色免费在线观看 | 中文字幕在线视频一区二区三区 | 成人福利电影 | 欧美精品久久久 | 国产一区二区黑人欧美xxxx | 免费亚洲婷婷 | a在线观看 | 日韩一区av| 色综合天天天天做夜夜夜夜做 | 日韩国产精品一区二区三区 | 免费美女网站 | 激情欧美日韩一区二区 | 欧洲视频一区二区 | 国产欧美一区二区三区久久 | 涩涩导航 | 日本免费小视频 | 福利网址| 午夜在线小视频 | 四虎在线观看 | 超碰免费在线观看 | 国产美女一区 | 啪啪综合网 | 91一区二区三区 | 热99| 婷婷亚洲综合 | 一区二区三区四区在线视频 | 国产成人综合久久 | 欧美日韩视频 | 免费九九视频 | 91久久久久久 | 精品久久久久一区二区国产 | 性欧美xxxx |