2.C# 值類型與引用類型

值類型

值類型的變量直接存儲數據。

值類型:byte,sbyte,short,ushort,int,long,float,double,decimal,char,bool,struct,enum

值類型變量聲明后,不管是否已經賦值,編譯器都會為其分配內存。

C#中的所有值類型均隱式派生自System.ValueType,而System.ValueType繼承自System.Object

值類型是堆棧分配,或者分配結構中的內聯。

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

所有值類型都是密封的,無法派生出新的值類型。


引用類型

引用類型的變量持有的是數據的引用,數據存儲在數據堆中。

引用類型:string,class,object,interface,delegate,數組

一般引用類型直接繼承于System.Object

當聲明一個類時,只在棧中分配一小片內存用于容納一個地址,而此時并沒有為其分配堆上的內存空間。

當使用new創建一個類的實例時,分配堆上的空間,并把堆上空間的地址保存到棧上分配的小片空間中。

引用類型可以派生出新的類型;值類型不行呦。

引用類型可以包含null值;值類型不行(可空類型功能允許講null賦值給值類型)。

引用類型變量的賦值只是復制對對象的引用,而不復制對象本身;而將一個值類型變量賦值給另一個值類型變量時,將復制包含的值。

注意:所有的數據類型都是對象。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 《CLR via C#》作者Jeffrey Richter的話來說,“不理解【引用類型】和【值類型】區別的程序員將...
    LH_晴閱讀 1,746評論 0 3
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,136評論 0 62
  • 值類型 值類型的特性: 1.C#的所有值類型均隱式派生自System.ValueType。 各個值類型及其基類: ...
    天lc吶閱讀 409評論 0 0
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,533評論 1 51
  • “道可道 ,非常道 。名可名 ,非常名。無 名天地之始 ﹔有名萬物之母 。故常無欲以觀其妙 ﹔ ……”無青講道,...
    葉絡閱讀 271評論 0 0