c# 引用類型和值類型
更新時(shí)間:2012年10月29日 13:56:24 作者:
CLR支持兩種類型:引用類型和值類型。引用類型總是從托管堆上分配的
CLR支持兩種類型:引用類型和值類型。
引用類型總是從托管堆上分配的。
c#中的New操作符返回對(duì)象的內(nèi)存地址。
引用對(duì)象的注意點(diǎn):
1、內(nèi)存從托管堆中分配
2、堆上分配對(duì)象,有一些額外的操作,影響一些性能的
3、從托管堆中分配一個(gè)對(duì)象時(shí),可能強(qiáng)制執(zhí)行一次垃圾回收。
CLR中的值類型是輕量級(jí)的。不需要提領(lǐng)一個(gè)指針,不需要垃圾回收,可以減少垃圾回收的次數(shù)。
在CLR中一般稱為“類”的都是引用類型,所有的值類型都稱為結(jié)構(gòu)或者枚舉。
所有的結(jié)構(gòu)都是抽象類ValueType的直接派生類。ValueType是直接從Object派生的。
所有的枚舉都是從Enum抽象類中派生的,Enum又是從ValueType派生的。
一個(gè)值類型可以實(shí)現(xiàn)一個(gè)或者多個(gè)接口,但是不能繼承基類。所有的值類型都是隱式密封的。
c#中用struct聲明結(jié)構(gòu),class聲明類。
值類型應(yīng)滿足:
1、類型具有基元類型
2、類型不需要從其他任何類型繼承
3、不會(huì)作為基類
4、類型的大小不要超過16k
值類型和引用類型的不同點(diǎn):
1、不能將值類型作為基類型
2、引用類型變量包含的是堆上的一個(gè)對(duì)象地址。值類型是值對(duì)象本身。
3、值類型賦值的時(shí)候會(huì)執(zhí)行一次逐字段的復(fù)制,引用類型變量賦值的時(shí)候,只復(fù)制內(nèi)存地址。
4、引用類型的多個(gè)變量可能引用堆中的同一個(gè)對(duì)象,值類型是自成一體的,互不影響的。
引用類型總是從托管堆上分配的。
c#中的New操作符返回對(duì)象的內(nèi)存地址。
引用對(duì)象的注意點(diǎn):
1、內(nèi)存從托管堆中分配
2、堆上分配對(duì)象,有一些額外的操作,影響一些性能的
3、從托管堆中分配一個(gè)對(duì)象時(shí),可能強(qiáng)制執(zhí)行一次垃圾回收。
CLR中的值類型是輕量級(jí)的。不需要提領(lǐng)一個(gè)指針,不需要垃圾回收,可以減少垃圾回收的次數(shù)。
在CLR中一般稱為“類”的都是引用類型,所有的值類型都稱為結(jié)構(gòu)或者枚舉。
所有的結(jié)構(gòu)都是抽象類ValueType的直接派生類。ValueType是直接從Object派生的。
所有的枚舉都是從Enum抽象類中派生的,Enum又是從ValueType派生的。
一個(gè)值類型可以實(shí)現(xiàn)一個(gè)或者多個(gè)接口,但是不能繼承基類。所有的值類型都是隱式密封的。
c#中用struct聲明結(jié)構(gòu),class聲明類。
值類型應(yīng)滿足:
1、類型具有基元類型
2、類型不需要從其他任何類型繼承
3、不會(huì)作為基類
4、類型的大小不要超過16k
值類型和引用類型的不同點(diǎn):
1、不能將值類型作為基類型
2、引用類型變量包含的是堆上的一個(gè)對(duì)象地址。值類型是值對(duì)象本身。
3、值類型賦值的時(shí)候會(huì)執(zhí)行一次逐字段的復(fù)制,引用類型變量賦值的時(shí)候,只復(fù)制內(nèi)存地址。
4、引用類型的多個(gè)變量可能引用堆中的同一個(gè)對(duì)象,值類型是自成一體的,互不影響的。
相關(guān)文章
c#中實(shí)現(xiàn)圖片灰度化技術(shù)詳解
這篇文章主要介紹了c#中實(shí)現(xiàn)圖片灰度化技術(shù)詳解,本文給出計(jì)算公式和實(shí)現(xiàn)代碼以及圖片例子,需要的朋友可以參考下2014-08-08基于WPF實(shí)現(xiàn)路徑圖標(biāo)控件
這篇文章主要介紹了如何利用WPF實(shí)現(xiàn)路徑圖標(biāo)控件,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的小伙伴可以參考一下2023-07-07基于C#實(shí)現(xiàn)SM2加簽驗(yàn)簽工具
這篇文章主要為大家詳細(xì)介紹了如何基于C#實(shí)現(xiàn)一個(gè)SM2加簽驗(yàn)簽工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10基于.net中突破每客戶端兩個(gè)http連接限制的詳細(xì)介紹
本篇文章是對(duì).net中突破每客戶端兩個(gè)http連接限制進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#高效比較兩個(gè)DataTable數(shù)據(jù)差異化的方法實(shí)現(xiàn)
本文主要介紹了C#高效比較兩個(gè)DataTable數(shù)據(jù)差異化的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05C#操作Access數(shù)據(jù)庫的實(shí)現(xiàn)過程(vs2019)
這篇文章主要介紹了C#操作Access數(shù)據(jù)庫的實(shí)現(xiàn)過程(vs2019),打開Office Access新建一個(gè)空白數(shù)據(jù)庫DATA.accdb,并改好存放位置,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-02-02基于Silverlight打印的使用詳解,是否為微軟的Bug問題
本篇文章對(duì)Silverlight打印的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05