亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中值類型和引用類型解析

2019-10-29 21:08:12
字體:
來源:轉載
供稿:網友

在C#中,值類型和引用類型是相當重要的兩個概念,必須在設計類型的時候就決定類型實例的行為。如果在編寫代碼時不能理解引用類型和值類型的區別,那么將會給代碼帶來不必要的異常。很多人就是因為沒有弄清楚這兩個概念從而在編程過程中遇到了很多問題,在這里博主淺談對值類型和引用類型的認識。

首先從概念上看,值類型直接存儲其值,而引用類型存儲對其值的引用。從而這兩種類型存儲在內存的不同地方。

其次從內存空間上看,值類型是在棧中操作,而引用類型則在堆中分配存儲單元。

棧在編譯的時候就分配好內存空間,在代碼中有棧的明確定義,而堆是程序運行中動態分配的內存空間,可以根據程序的運行情況動態地分配內存的大小。因此,值類型總是在內存中占用一個預定義的字節數。而引用類型的變量則在棧中分配一個內存空間,這個內存空間包含的是對另一個內存位置的引用,這個位置是托管堆中的一個地址,即存放此變量實際值的地方。

也就是說值類型相當于現金,要用就直接用,而引類型相當于存折,要用得先去銀行取。

但值類型在棧上分配內存,而引用類型在托管堆上分配內存,只是一種籠統的說法。下面對其進行詳細描述。

(1)對于值類型的實例,如果作為方法中的局部變量,則被創建在線程棧上;如果該實例作為類型的成員,則作為類型成員的一部分,連同其他類型字段存放在托管堆上。

每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。例如:

int i = new int(); 

等價于:

Int32 i = new Int32(); 

等價于:

int i = 0; 

等價于:

Int32 i = 0; 

使用new運算符時,將調用特定類型的默認構造函數并對變量賦以默認值。在上例中,默認構造函數將值0賦給了i。

說明:C#的所有值類型均隱式派生自System.ValueType,而System.ValueType直接派生于System.Object。即System.ValueType本身是一個類類型,而不是值類型。其關鍵在于ValueType重寫了Equals方法,從而對值類型按照實例的值來比較,而不是引用地址來比較。

(2)引用類型的實例創建在托管堆上。

下面以一段代碼來詳細講解一下值類型與引用類型的區別

namespace Test   {       class Program       {         static void Main(string[] args)         {        //調用ReferenceAndValue類中的Demonstration方法           ReferenceAndValue.Demonstration();           Console.ReadLine();         }       }       public class stamp       //定義一個類       {         public string Name { get; set; }    //定義引用類型         public int Age { get; set; }    //定義值類型       }       public static class ReferenceAndValue   //定義一個靜態類       {         public static void Demonstration()   //定義一個靜態方法         {           stamp Stamp_1 = new stamp { Name = "Premiere", Age = 25 }; //實例化           stamp Stamp_2 = new stamp { Name = "Again", Age = 47 }; //實例化           int age = Stamp_1.Age;     //獲取值類型Age的值           Stamp_1.Age = 22;     //修改值類型的值           stamp guru = Stamp_2;     //獲取Stamp_2中的值           Stamp_2.Name = "Again Amend";   //修改引用的Name值           Console.WriteLine("Stamp_1's age:{0}", Stamp_1.Age); //顯示Stamp_1中的Age值           Console.WriteLine("age's value:{0}", age); //顯示age值           Console.WriteLine("Stamp_2's name:{0}", Stamp_2.Name); //顯示Stamp_2中的Name值           Console.WriteLine("guru's name:{0}", guru.Name); //顯示guru中的Name值         }     }   }

通過運行上面一段程序之后我們可以看出,當改變了Stamp_1.Age的值時,age并沒有跟著變,但在改變了anders.Name的值后,guru.Name卻跟著變了,這就是值類型和引用類型的區別。在聲明age值類型變量時,將 Stamp_1.Age的值賦給它,這時,編譯器在棧上分配了一塊空間,然后把Stamp_1.Age的值填進去,二者沒有任何關聯,就像在計算機中復制文件一樣,只是把Stamp_1.Age的值拷貝給age了。而引用類型則不同,在聲明guru時把Stamp_2賦給它,前面說過,引用類型包含的只是堆上數據區域地址的引用,其實就是把Stamp_2的引用也賦給guru,因此它們指向了同一塊內存區域。既然是指向同一塊區域,不管修改誰,另一個的值都會跟著改變,就像信用卡跟親情卡一樣,用親情卡取了錢,與之關聯的信用卡賬上也會跟著發生變化。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品视频在线| 成人欧美一区二区三区黑人孕妇| 国产精品自在线| 亚洲自拍中文字幕| 欧美日韩精品国产| 国产一区av在线| 日本乱人伦a精品| 这里只有精品视频| 97视频在线播放| 精品呦交小u女在线| 欧美午夜性色大片在线观看| 日韩av在线网| 国产精品香蕉av| 国产精品美腿一区在线看| 5278欧美一区二区三区| 亚洲人成亚洲人成在线观看| 欧美一级片在线播放| 久久久久久久久国产精品| 日本免费在线精品| 日韩综合中文字幕| 啊v视频在线一区二区三区| 日本aⅴ大伊香蕉精品视频| 亚洲国产美女精品久久久久∴| 日韩最新中文字幕电影免费看| 国产精品一久久香蕉国产线看观看| 亚洲视频在线观看免费| 国产精品成人一区二区| 亚洲欧美日韩精品久久| 91av在线播放视频| 国产精品旅馆在线| 在线日韩精品视频| 国产精品高潮呻吟久久av黑人| 亚洲精品一区二区在线| 一本色道久久综合亚洲精品小说| 国产日韩av高清| 国产精品国产亚洲伊人久久| 中文字幕精品av| 亚洲成人黄色在线观看| 国产精品久久久久久久电影| 亚洲美女视频网站| 欧美激情在线狂野欧美精品| 狠狠综合久久av一区二区小说| 日韩欧美在线网址| 久久久久久久久久av| 欧美二区在线播放| 隔壁老王国产在线精品| 精品夜色国产国偷在线| 欧美日韩高清在线观看| 亚洲精品小视频| 亚洲成人亚洲激情| 久久久伊人欧美| 午夜精品久久久久久久白皮肤| 欧美在线视频在线播放完整版免费观看| 午夜精品一区二区三区在线| 国产欧美日韩中文字幕在线| 国产精品美乳在线观看| 亚洲国产精品美女| 一区二区三欧美| 精品偷拍各种wc美女嘘嘘| 国产精国产精品| 国产精品视频区| 中文字幕在线日韩| 亚洲**2019国产| 午夜美女久久久久爽久久| 视频一区视频二区国产精品| 国产精品丝袜久久久久久不卡| 91av在线国产| 成人国内精品久久久久一区| 国产精品私拍pans大尺度在线| 欧美精品videos| 亚洲激情成人网| 岛国av一区二区在线在线观看| 欧美国产日本高清在线| 国内精品中文字幕| 亚洲最大av在线| 91精品啪在线观看麻豆免费| 91沈先生作品| 久久91亚洲人成电影网站| 欧美极品少妇与黑人| 国产精品狼人色视频一区| 欧美另类极品videosbest最新版本| 欧美人成在线视频| 中文字幕亚洲综合| 欧美最顶级的aⅴ艳星| 亚洲国产精品99久久| 亚洲第一偷拍网| 在线观看日韩www视频免费| 欧美激情va永久在线播放| 国产精品伦子伦免费视频| 91精品国产91久久| 日本精品免费一区二区三区| 久久久亚洲欧洲日产国码aⅴ| 日韩精品视频在线| 国产v综合v亚洲欧美久久| 久久免费少妇高潮久久精品99| 中文字幕欧美专区| 尤物tv国产一区| 久久久久国产精品一区| 成人黄色大片在线免费观看| 国产精品一久久香蕉国产线看观看| 久久久国产精彩视频美女艺术照福利| 日韩在线欧美在线国产在线| 欧美性猛交xxxx免费看| 国内精品国产三级国产在线专| 日韩三级影视基地| 亚洲欧美一区二区精品久久久| 久久久www成人免费精品| 亚洲少妇中文在线| 日韩av电影免费观看高清| 日韩精品一区二区三区第95| 96精品久久久久中文字幕| 日韩成人在线免费观看| 久久高清视频免费| 欧美最猛黑人xxxx黑人猛叫黄| 最近2019免费中文字幕视频三| 亚洲综合一区二区不卡| 日韩精品中文字幕在线| 午夜精品久久久久久99热| 91精品国产综合久久香蕉的用户体验| 国产91精品高潮白浆喷水| 91色视频在线导航| 7777精品视频| 92版电视剧仙鹤神针在线观看| 欧美夫妻性生活视频| 成人网在线免费观看| 国产美女精彩久久| 久久久久久国产| 亚洲午夜精品久久久久久性色| 成人精品一区二区三区| 成人免费直播live| 国产精品久久久久9999| 57pao成人国产永久免费| 欧美大胆a视频| 亚洲精品一区中文字幕乱码| 九九精品视频在线观看| 亚洲一区二区三区xxx视频| 国产69久久精品成人| 国产精品三级久久久久久电影| 亚洲曰本av电影| 国产精品香蕉av| 国产精品久久久久久久久久久久久| 日韩成人在线视频| 成人午夜在线影院| 久久天天躁日日躁| 精品国产31久久久久久| 久久综合伊人77777| 亚洲欧美精品在线| 亚洲人成在线一二| 国产精品va在线播放我和闺蜜| 久久99久久亚洲国产| 国产精品视频成人| 国产日韩中文字幕在线| 精品久久久久久中文字幕大豆网| 国产91在线播放九色快色| 欧美视频一区二区三区…| 色七七影院综合| 日韩人体视频一二区| 91中文精品字幕在线视频| 日韩免费在线免费观看| 亚洲欧美国产日韩天堂区| 亚洲精品电影网在线观看| 亚洲欧洲国产伦综合| 久久亚洲精品网站| 视频一区视频二区国产精品|