當你在乙個.net應用程式中宣告乙個變數時,手想要分配一些記憶體塊到ram,它包括三樣東西,變數名、資料型別、變數的值。根據變數的型別不同,有兩種記憶體分配型別:堆疊記憶體和堆記憶體。
明確資料大小或是是否存在動態變化,是變數分配到堆還是堆疊的依據:定——堆疊,不定——堆。
資料從值型別一道引用型別——裝箱,反之為拆箱。
引用型別之間的轉換,堆上記憶體重新分配。
隱式轉換總會成功的情況,不會丟擲異常:
1、從派生類到基類;
2、從派生介面到基介面;
3、從類到介面(該類實現了介面);
4、從null到任何類;
顯式引用轉換,以下可能丟擲異常,轉換不一定成功:
1、從基類到派生類;
2、從介面到介面(基介面到派生介面或者倆介面沒有關係);
3、從介面到類(該類實現了該介面或該類未封閉);
4、從類到介面(該類未實現該介面且該類未封閉);
is運算子返回乙個bool值,因此,如果只想確定物件的型別,而無需對它進行實際強制轉化,則可以使用is運算子;
理解棧 堆 值型別 引用型別 裝箱和拆箱
net中有2種可分配的記憶體型別 棧和堆 net基元資料型別是指編譯器直接支援的資料型別 net定義乙個變數,系統會為其分配一塊記憶體塊,包括 變數名稱 資料型別 變數值 當乙個值型別的變數賦值給另乙個值型別變數時,實際上是建立乙個值的副本,值的變化在變數間互不影響。引用型別變數的值為資料值的引用,...
值型別和引用型別,裝箱和拆箱
c 中任何型別都是隱式繼承自 system.object 引用型別 分為兩大類,值型別和引用型別。值型別包括 簡單型別 int,float,double等 結構體,列舉 引用型別包括 自定義的類,字串,介面,陣列 區別 1.值型別儲存在棧中,自動釋放,比較高效 引用型別儲存在堆中,需要手動釋放 2....
C 裝箱和拆箱(值型別和引用型別)
在 c 語言中資料型別分為值型別和引用型別,將值型別轉換為引用型別的操作稱為裝箱,相應地將引用型別轉換成值型別稱為拆箱。c tostring 方法用於將任意的資料型別轉換成字串型別,例如將整數型別轉換成字串型別。int a 100 string str a.tostring 裝箱 在上面的轉換中 i...