成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

理解C#值類型和引用類型

開發 后端
本文根據筆者的經驗,講了將如何理解C#值類型和引用類型。

工作許久了,可是對C#值類型和C#引用類型卻一直無法很好的理解。這兩天花了不少時間查找資料,看文章,終于有所收獲,在此將自己理解整理出來,方便日后自己查看,同時希望對跟我有一樣困惑的朋友有所幫助。廢話不多說,下面開始說說怎么理解值類型和引用類型!

C#值類型數據直接在他自身分配到的內存中存儲數據,而C#引用類型只是包含指向存儲數據位置的指針。

那么有哪些類型是C#值類型的呢,我把他們歸納成三類:

基礎數據類型(string類型除外):包括整型、浮點型、十進制型、布爾型。

整型包括:sbyte、byte、char、short、ushort、int、uint、long、ulong 這九種類型;

浮點型就包括 float 和 double 兩種類型;

十進制型就是 decimal ;

布爾型就是 bool 型了。

結構類型:就是 struct 型

枚舉類型:就是 enum 型

引用類型有五種:class、interface、delegate、object、string

上面說的是怎么區分哪些C#值類型和C#引用類型,而使用上也是有區別的。所有值類型的數據都無法為null的,聲明后必須賦以初值;引用類型才允許為null。

  1.   int i = 0;   
  2.   //或者   
  3.   int i = new int();   
  4.   //以上兩種都是可以正確的且是等同的   
  5.   int i = null;//這樣的語句是無法通過編譯的,因為i是值類型的,是不允許為null的   
  6.   class c = null;//這樣則是可以通過編譯的,這里的c是引用類型的,允許為null  

值類型和引用類型在賦值(或者說復制)的時候也是有區別的。值類型數據在賦值的時候是直接復制值到新的對象中,而引用類型則只是復制對象的引用。例如:

  1.   public class abc   
  2.   {   
  3.   public int Attribute;   
  4.   public abc()   
  5.   {   
  6.   Attribute = 1;   
  7.   }   
  8.   }   
  9.   public static void Main()   
  10.   {   
  11.   int i = 0;   
  12.   int j = i;   
  13.   i = 1;   
  14.   Console.WriteLine("i={0}",i);   
  15.   Console.WriteLine("j={0}",j);   
  16.   //結果是:   
  17.   //i=1   
  18.   //j=0   
  19.   abc a1 = new abc();   
  20.   abc a2 = a1;   
  21.   a1.Attribute = 2;   
  22.   Console.WriteLine("a1={0}",a1.Attribute);   
  23.   Console.WriteLine("a2={0}",a2.Attribute);   
  24.   //結果是:   
  25.   //a1=2   
  26.   //a1=2   
  27.   }  

這個例子就很好的說明了值類型和引用類型的不同了。

***還有值C#類型要么是分配在堆棧的,要么就是在結構中以內聯方式分配的。C#引用類型是分配在堆的。C#引用類型和C#值類型都是從基類 Object 派生出來的。當C#值類型需要充當對象時,就在堆上分配一個包裝(該包裝能使值類型看上去像引用對象一樣),并且將該值類型的值復制給它。該包裝被加上標記,以便系統知道它包含一個值類型。這個進程稱為裝箱,反過來操作就稱為拆箱。裝箱和拆箱能夠使任何類型像對象一樣進行處理。

【編輯推薦】

  1. C#事件和委托的編譯代碼
  2. C#事件的由來
  3. 學習C#委托:將方法綁定到委托
  4. 學習C#委托:將方法作為方法的參數
  5. C# 插件構架實例詳解
責任編輯:book05 來源: IT專家網
相關推薦

2009-08-26 14:05:19

C#值類型和引用類型

2009-08-27 16:39:26

C# String類型

2009-08-31 14:34:46

C#值類型C#結構類型

2011-06-08 13:03:52

C#值類型引用類型

2009-10-22 18:41:49

CLR VIA C#教

2009-08-14 17:09:48

C#引用類型

2013-05-23 17:21:16

C#

2009-09-03 16:55:58

C#引用類型

2009-08-06 10:14:15

C#引用類型數組

2009-10-10 09:53:07

.NET值類型

2009-09-11 11:09:36

C#引用類型

2009-08-03 17:51:43

C#引用類型

2009-09-11 11:17:04

C#引用類型

2021-08-27 07:47:06

引用類型

2009-08-25 17:52:01

C#可空值類型

2009-08-24 13:52:04

C# 泛型約束

2009-08-03 14:54:23

值類型C#

2009-08-26 10:34:15

C#類型C#變量

2009-08-10 17:25:58

C#匿名類型

2009-08-26 15:46:01

C#匿名類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线观看一区 | av网站观看 | 久久性色 | 99热国产精品 | 精产国产伦理一二三区 | 久草视频观看 | 久久久久亚洲精品 | 美女张开腿露出尿口 | 黄色av网站在线观看 | 国产精品久久久久久婷婷天堂 | 久久综合狠狠综合久久综合88 | 丝袜美腿一区二区三区 | 亚洲视频一区 | 亚洲444eee在线观看 | 亚洲精品成人网 | 免费美女网站 | 亚洲人成人一区二区在线观看 | 欧美国产精品一区二区三区 | 日韩一区二区三区在线观看 | 国产成人精品午夜视频免费 | 视频精品一区二区三区 | 国产99久久久国产精品 | 成人小视频在线观看 | 国产福利视频在线观看 | 黄色毛片网站在线观看 | 一区二区日本 | 精品国产欧美一区二区三区不卡 | 国产一级电影在线 | www.99热这里只有精品 | 日一日操一操 | 91精品国产综合久久久久久丝袜 | 日韩黄 | 欧美一区免费 | 日本久久精 | 日韩一级免费看 | 91色网站| 欧美xxxx在线 | 国产精品一区在线 | 国产精品国色综合久久 | 黄色在线观看网站 | 国产精品久久国产精品久久 |