国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#引用類型和值類型的適用場合和區(qū)別

2020-01-24 00:11:12
字體:
來源:轉載
供稿:網(wǎng)友

1.值類型

值類型包括:數(shù)值類型,結構體,bool型,用戶定義的結構體,枚舉,可空類型。

值類型的變量直接存儲數(shù)據(jù),分配在托管棧中。變量會在創(chuàng)建它們的方法返回時自動釋放。

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

2.引用類型

引用類型包括:數(shù)組,用戶定義的類、接口、委托,object,字符串,null類型,類。

引用類型的變量持有的是數(shù)據(jù)的引用,數(shù)據(jù)存儲在數(shù)據(jù)堆,分配在托管堆中,變量并不會在創(chuàng)建它們的方法結束時釋放內存,它們所占用的內存會被CLR中的垃圾回收機制釋放。 

CLR常用簡寫詞語,CLR是公共語言運行庫(Common Language Runtime)和Java虛擬機一樣也是一個運行時環(huán)境,它負責資源管理(內存分配和垃圾收集等),并保證應用和底層操作系統(tǒng)之間必要的分離。

3.值類型與引用類型區(qū)別:

4.適用場合:

值類型在內存管理方面具有更好的效率,并且不支持多態(tài),適合用做存儲數(shù)據(jù)的載體;引用類型支持多態(tài),適合用于定義應用程序的行為。

引用類型可以派生出新的類型,而值類型不能,因為所有的值類型都是密封的。

引用類型可包含null值,值類型不能(可空類型功能允許將null賦給值類型,如int a=null);

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

5.裝箱和拆箱

1)裝箱就是將一個值類型轉換成等值的引用類型

在堆上為新生成的對象(該對象包含數(shù)據(jù),對象本身沒有名稱)分配內存。

將堆棧上值類型變量的值拷貝到堆上的對象中。

將堆上創(chuàng)建的對象的地址返回給引用類型變量(從程序員角度看,這個變量的名稱就好像堆上對象的名稱一樣)。

2)拆箱就是將一個引用類型轉換成等值的值類型

將引用類型變量堆上的值拷貝到棧上面。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網(wǎng)的支持。如果你想了解更多相關內容請查看下面相關鏈接

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙泉市| 芜湖县| 两当县| 浙江省| 白银市| 灵宝市| 乌拉特前旗| 精河县| 嵩明县| 唐山市| 固阳县| 福清市| 嘉禾县| 宁明县| 南溪县| 凤凰县| 乌拉特前旗| 凤山县| 临清市| 黎川县| 中超| 北流市| 乡城县| 启东市| 察隅县| 冷水江市| 乌什县| 东乡| 宁蒗| 武陟县| 弥勒县| 石棉县| 济宁市| 南昌市| 三门县| 阳西县| 深州市| 大悟县| 永顺县| 长丰县| 保德县|