( 聲明:本系列只想給大家介紹.net框架,并不是語法和類的使用的講解,所以只能概括的描述一下所提到的類,如果有疑問可以到MSDN上面去查 )
前面我們學習了.net的運行引擎,知道了Appdomain要承載各種dll,那么我們就來學習一下最基本的system.dll,這個任何代碼都要引用的大家伙.
還是老規矩,圖解..嘿嘿上圖了
看了圖以后大家應該有一個初步的了解了吧,我們來一個一個的學習吧,大家都知道.net中分為值類型和引用類型,我們來看這兩種類型的區別
object:這個類是.net所有類的父類,他有一些公用的方法,如ToString,Equals,GetHashCode等,這里用到GOF23中模板方法(Templete Method)這個設計模式,其實我們在開發中經常去用這個模式,這樣就省去了其他的類重復來寫這些方法.
ValueType:.net中所有的值類型都派生自這個類,而他自己卻又派生自Object,很奇怪吧,實際上只是MS為了讓.net完全的面向對象而已,沒有什么,理解就好.
1.賦值問題:值類型和引用類型在內存中分別存在棧和堆上,他們在賦值的時候,值類型是復制,引用類型是本身(實際上是產生一個對堆上同一個對象的新引用).要說明的是包含引用類型的值類型,在賦值時也是Copy了引用,不要迷糊哦.
我們來寫點代碼說明這個問題吧.















2.作為參數傳遞的問題:值類型作為參數傳遞時如果按值傳遞那么就是Copy,如果按照引用傳遞那么就是本身,那么引用類型呢?我們來看段代碼:




































所以說按照引用(ref)傳遞引用類型,傳遞的是本身。而按照值傳遞,傳遞的是引用類型的引用。
Delegate:委托的基類,要注意delegate關鍵字,繼承自MulticastDelegate,而MulticastDelegate繼承自Delegate.委托類型維護的方法的地址列表,就保存在Delegate這個對象當中.這就是.Net委托的秘密.這里用到了GOF23中Proxy(代理)這種設計模式,起到下述 3)保護代理的作用。
在需要用比較通用和復雜的對象指針代替簡單的指針的時候,使用P r o x y 模式。下面是一 些可以使用P r o x y 模式常見情況:
1) 遠程代理(Remote Proxy )為一個對象在不同的地址空間提供局部代表。
2 )虛代理(Virtual Proxy )根據需要創建開銷很大的對象。
3) 保護代理(Protection Proxy )控制對原始對象的訪問。保護代理用于對象應該有不同 的訪問權限的時候。
4 )智能指引(Smart Reference )取代了簡單的指針,它在訪問對象時執行一些附加操作。
在這里Delegate作為RealSubject,而multicastDelegate作為Proxy,來保護Delegate中的一些方法.
委托還有異步調用,這將在System.threading這一節來講解.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
