亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-02 11:34:57 來源:億速云 閱讀:168 作者:iii 欄目:編程語言

本篇內容主要講解“如何理解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。

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

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

public class abc   {   public int Attribute;   public abc()   {   Attribute = 1;   }   }   public static void Main()   {   int i = 0;   int j = i;   i = 1;   Console.WriteLine("i={0}",i);   Console.WriteLine("j={0}",j);   //結果是:   //i=1   //j=0   abc a1 = new abc();   abc a2 = a1;   a1.Attribute = 2;   Console.WriteLine("a1={0}",a1.Attribute);   Console.WriteLine("a2={0}",a2.Attribute);   //結果是:   //a1=2   //a1=2   }

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

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

到此,相信大家對“如何理解C#值類型和引用類型”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴林右旗| 龙川县| 麻栗坡县| 平远县| 陇南市| 香河县| 静海县| 南皮县| 海晏县| 苏尼特左旗| 盐源县| 福安市| 山丹县| 临清市| 丘北县| 信丰县| 蓬安县| 达日县| 玛沁县| 黄大仙区| 浙江省| 安龙县| 耒阳市| 韶山市| 雷山县| 邹平县| 泾阳县| 龙川县| 高密市| 英山县| 滦平县| 富锦市| 黄平县| 涞水县| 合江县| 河间市| 中山市| 改则县| 文安县| 永安市| 安乡县|