程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 值類型和引用類型 裝箱和拆箱 類和結構的異同 接口抽象類異同

值類型和引用類型 裝箱和拆箱 類和結構的異同 接口抽象類異同

編輯:關於.NET
1、棧和堆內存分配區分: 內存內部的組織情況:分為棧區、堆區、全局區(靜態區)static、文字常量區、程序代碼區。 a、由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等,內存的分配是連續的,類似於平時我們所說的棧,如果還不清楚,那麼就把它想成數組,它的內存分配是連續分配的,即,所分配的內存是在一塊連續的內存區域內.當我們聲明變量時,那麼編譯器會自動接著當前棧區的結尾來分配內存. b、一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由操作系統回收.類似於鏈表,在內存中的分布不是連續的,它們是不同區域的內存塊通過指針鏈接起來的.一旦某一節點從鏈中斷開,我們要人為的把所斷開的節點從內存中釋放. c、全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。 程序結束後由系統釋放。
d、常量字符串就是放在這裡的。 程序結束後由系統釋放。 e、存放函數體的二進制代碼。     棧在內存分配上是連續的。堆(鏈表)是分散的。在棧上所申請的內存空間,當我們出了變量所在的作用域後,系統會自動我們回收這些空間,而在堆上申請的空間,當出了相應的作用域以後,我們需要顯式 的調用delete來釋放所申請的內存空間,如果我們不及時得對這些空間進行釋放,那麼內存中的內存碎片就越來越多,從而我們的實際內存空間也就會變的越 來越少,即,孤立的內存塊越來越多.所以在使用完動態分配的內存(通過NEW申請)後,一定要顯式的對它進行DELETE刪除.對於這一點,一定 要切記... 2、A。值類型。值類型是在棧中分配內存,在聲明時初始化才能使用,不能為null。值類型超出作用范圍系統自動釋放內存。 主要由兩類組成:結構,枚舉(enum),結構分為以下幾類:整型(Sbyte、Byte、Char、Short、Ushort、Int、Uint、Long、Ulong)
浮點型(Float、Double)
decimal
bool
用戶定義的結構(struct)
B。引用類型。引用類型在堆中分配內存,初始化時默認為null。
引用類型是通過垃圾回收機制進行回收。
包括類、接口、委托、數組以及內置引用類型object與string。   裝箱:是從值類型轉換成引用類型 :  int i=32;ohject o=i;  -->裝箱操作 拆箱:引用類型轉換值類型: object o=23,int i=(int)o;   3、結構包括:整型、浮點型、decimal、 bool、 用戶定義的結構————》》是值類型。——》在棧中——》可以實現接口和繼承,可以作為基類型      類:引用類型——在堆中,只可以實現接口   4、接口抽象類異同: 概念不同:接口是對動作的抽象,抽象類是對對象的抽象,對象包括屬性動作 所以:接口可以被多重繼承,你可以擁有多個動作,而抽象類只能被繼承,因為你爸只能是你爸。如果把抽煙喝酒等一些列動作作為接口,那麼作為兒子的你就可以實現這些接口,完全可以抽煙喝酒! 再一點:接口中所有的方法都是抽象的,而抽象類不必 還一點: 接口定義方法,不能實現,而抽象類可以實現部分方法。 最後: 接口中基本數據類型為static 而抽類象不是的。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved