亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

C#中的值類型與引用類型-譯自《Essential C# 4

系統 2759 0

一、值類型

  除去string外,所有的預定義基礎類型都是值類型。值類型直接包含值。換句話說,該變量指向內存中存儲(變量)值的同一地址。
正因為如此,當一個不同的變量被分配了相同的值,原始變量的值的內存副本改變到新的變量的地址。一個相同值類型的第二個變量不能指向內存中的第一個變量相同的地址。因此,改變了第一個變量的值不會影響到第二個值。

如下圖:

  如上圖,number1指向包含值42的內存中的特殊地址,將number1分配給number2后,這兩個變量都包含值42。然而,修改任何一個變量的值不影響另外一個。

  類似地,傳遞一個值類型到一個方法(類如Console.WriteLine())會導致內存復制,方法中參數的任何改變不會影響調用函數范圍內的原始值。因為值類型需要一個內存復制,通常它們應當被定義為小額內存開銷(小于16字節)

二、變量類型

  引用類型和引用它們的變量指向數據存儲地址。引用類型存儲了數據存儲地址的引用,而不是直接存儲數據。因此,訪問數據時,運行時將讀取(引用變量的)內存位置,并跳到包含數據的內存地址。一個引用類型指向的數據內存區域是一個Heap(堆),如下圖

  一個引用類型并不像值類型那樣需要數據的相同的內存副本,后者效率更高但會導致一些問題。當把一個引用類型的變量值賦給另外一個引用類型變量時,僅 有一次地址的內存復制發生,因此,引用類型需要的內存復本總是內存地址本身大小(32位處理器復制32bit,64位處理器復制64bit)。

  顯然,不復制數據將比值類型的(復制)快一些,特別是后者的數據較龐大時。由于引用類型僅僅復制數據的地址,兩個不同的變量能指向相同的數據,通過 一個變量改變數據將改變另一個變量。在賦值或方法調用時均如此。因此,一個方法會影響引用類型的數據并返回給調用者。由于這個原因,選擇定義一個變量為值 類型還是引用類型的決定性因素是該對象是否在邏輯上是一樣的大小不變的固定值,如果是,則值類型。

  string,自定義的類屬于引用類型。

--邀月譯自《Essential C# 4.0》

附:

值類型:基礎數據類型(整型、布爾型、字符型、實數型)、結構型、枚舉型。
引用類型:類、對象、string、數組、接口、委托。

邀月注:本文版權由邀月和CSDN共同所有,轉載請注明出處。
助人等于自助! 3w@live.cn

C#中的值類型與引用類型-譯自《Essential C# 4.0》


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 奇米777888| 国产免费播放一区二区三区 | 国产精品福利资源在线 | 久久婷婷综合在线视频观看6 | 四虎精品成人a在线观看 | 一级特黄女人生活片 | 日日摸狠狠的摸夜夜摸 | 九九色视频在线观看 | 国产成人高清精品免费观看 | 俄罗斯一级毛片免费视频 | 亚洲天天做日日摸天天做 | 久久精品男人的天堂 | 精品欧美一区二区在线观看 | 国内精品久久久久久网站 | 亚洲精品精品 | 一区二区日本 | 国产欧美精品一区aⅴ影院 国产欧美精品一区二区 | 日本国产成人精品视频 | 99久久免费费视频在线观看 | 综合色久| 精品综合网 | 国产精品亚洲综合一区在线观看 | 老色鬼a∨在线视频在线观看 | 99热这里只有精品在线 | 久久精品国产99国产精品免费看 | 秋霞伊人| 伊人久久在线视频 | 国产精品色 | 国产亚洲精品久久午夜 | 伊人一道本| 国产综合成人久久大片91 | 老司机亚洲精品影院在线 | 国产日韩欧美在线观看免费视频 | 桃花视频www | 日产国产精品久久久久久 | 狠狠色丁香久久婷婷综合_中 | 中文字幕日韩女同互慰视频 | 一级一级女人18毛片 | 九九九九热精品视频 | 高h粗大强行撑开紧窄的嫩缝 | 99久久精品男女性高爱 |