欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

圖解DotNet框架之二:System

系統 1970 0

( 聲明:本系列只想給大家介紹.net框架,并不是語法和類的使用的講解,所以只能概括的描述一下所提到的類,如果有疑問可以到MSDN上面去查 )


前面我們學習了.net的運行引擎,知道了Appdomain要承載各種dll,那么我們就來學習一下最基本的system.dll,這個任何代碼都要引用的大家伙.
還是老規矩,圖解..嘿嘿上圖了



圖解DotNet框架之二:System

看了圖以后大家應該有一個初步的了解了吧,我們來一個一個的學習吧,大家都知道.net中分為值類型和引用類型,我們來看這兩種類型的區別

object:這個類是.net所有類的父類,他有一些公用的方法,如ToString,Equals,GetHashCode等,這里用到GOF23中模板方法(Templete Method)這個設計模式,其實我們在開發中經常去用這個模式,這樣就省去了其他的類重復來寫這些方法.
ValueType:.net中所有的值類型都派生自這個類,而他自己卻又派生自Object,很奇怪吧,實際上只是MS為了讓.net完全的面向對象而已,沒有什么,理解就好.

1.賦值問題:值類型和引用類型在內存中分別存在棧和堆上,他們在賦值的時候,值類型是復制,引用類型是本身(實際上是產生一個對堆上同一個對象的新引用).要說明的是包含引用類型的值類型,在賦值時也是Copy了引用,不要迷糊哦.

我們來寫點代碼說明這個問題吧.

static void Main( string []args)
{
int i = 10 ;
int j = i;
j
= 20 ;
Console.Write(i);
/**/ /// 結果i還是10,而沒有變成20,說明賦值是復制
Testt1 = new Test();
t1.age
= 10 ;
t1.name
= " test " ;
Testt2
= new Test();
t2
= t1;
t1.age
= 20 ;
t1.name
= " Test2 " ;
Console.Write(t2.age.ToString()
+ " & " + t2.name); /**/ /// 結果是"20&Test2",說明傳遞的是本身
}


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

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> namespace ConsoleApplication3
{
class Program
{
class Test
{
public string name; // 為了方便就不封裝了
public int age;
}

static void Main( string []args)
{


Testt1
= new Test();
t1.age
= 10 ;
t1.name
= " test " ;
TestMethod(t1);
Console.Write(t1.age.ToString()
+ " & " + t1.name); /**/ /// 結果是"20&Test2",說明傳遞的是本身的引用,而一個引用重新賦值不會影響本身
TestMethod( ref t1);
Console.Write(
" /r/n " + t1.age.ToString() + " & " + t1.name); /**/ /// 結果是"0&null",說明傳遞的是本身.
Console.Read();
}

static void TestMethod(Testt)
{
t.age
= 20 ;
t.name
= " Test2 " ;
t
= new Test(); // 這里重新初始化
}

static void TestMethod( ref Testt) // 看看按照引用傳遞會發生什么?
{
t.age
= 20 ;
t.name
= " Test2 " ;
t
= new Test(); // 這里重新初始化
}


所以說按照引用(ref)傳遞引用類型,傳遞的是本身。而按照值傳遞,傳遞的是引用類型的引用。

Delegate:委托的基類,要注意delegate關鍵字,繼承自MulticastDelegate,而MulticastDelegate繼承自Delegate.委托類型維護的方法的地址列表,就保存在Delegate這個對象當中.這就是.Net委托的秘密.這里用到了GOF23中Proxy(代理)這種設計模式,起到下述 3)保護代理的作用。

圖解DotNet框架之二:System

在需要用比較通用和復雜的對象指針代替簡單的指針的時候,使用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這一節來講解.

圖解DotNet框架之二:System


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人免费播放视频777777 | 久久久久国产一区二区三区 | 久草在线在线 | 成人网视频 | 日本视频网站在线观看 | 久久久久久99 | 丝袜美腿一区二区三区 | 91精品国产日韩91久久久久久 | 欧美在线观看一区 | 日韩欧美一区二区三区 | 成人在线视频网站 | 欧美精品日韩一区二区三区 | 欧美一级在线观看视频 | 色综合视频在线观看 | 欧美日韩一区二区三区在线观看 | 狠狠色噜噜狠狠狠狠色吗综合 | 亚洲 偷拍 色播 | 超级碰碰碰视频在线观看 | 成人国产精品一区二区毛片在线 | 亚洲第一黄色网址 | 欧美激情视频网 | 日韩成人一区 | 伦一区二区三区中文字幕v亚洲 | 青娱乐国产精品 | 青娱乐久草 | 亚洲视频在线观看 | 四虎在线免费观看 | 福利片在线观看 | 狠狠干伊人 | 国产福利视屏 | 国产美女福利视频福利 | 免费看欧美成人性色生活片 | ⅴideo裸体秀hd| 香蕉国产在线观看免费 | 亚洲精品国产成人无码区A片 | 天天在线 | 欧美成人性视频播放 | 国产精品一卡二卡三卡 | 色黄网站在线观看 | 丁香六月伊人 | 久久天堂网 |