c# 參考型別和實值型別

來源:互聯網
上載者:User

CLR支援兩種類型:參考型別和實值型別。
參考型別總是從託管堆上分配的。

c#中的New操作符返回對象的記憶體位址。

引用對象的注意點:

1、記憶體從託管堆中分配
2、堆上指派至,有一些額外的操作,影響一些效能的
3、從託管堆中分配一個對象時,可能強制執行一次記憶體回收。

CLR中的實值型別是輕量級的。不需要提領一個指標,不需要記憶體回收,可以減少記憶體回收的次數。
在CLR中一般稱為“類”的都是參考型別,所有的實值型別都稱為結構或者枚舉。
所有的結構都是抽象類別ValueType的直接衍生類別。ValueType是直接從Object派生的。
所有的枚舉都是從Enum抽象類別中派生的,Enum又是從ValueType派生的。

一個實值型別可以實現一個或者多個介面,但是不能繼承基類。所有的實值型別都是隱式密封的。

c#中用struct聲明結構,class聲明類。

實值型別應滿足:

1、類型具有基元類型
2、類型不需要從其他任何類型繼承
3、不會作為基類
4、類型的大小不要超過16k

實值型別和參考型別的不同點:

1、不能將實值型別作為基底類型
2、參考型別變數包含的是堆上的一個對象地址。實值型別是值對象本身。
3、實值型別賦值的時候會執行一次逐欄位的複製,參考型別變數賦值的時候,只複製記憶體位址。
4、參考型別的多個變數可能引用堆中的同一個對象,實值型別是自成一體的,互不影響的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.