什麼是c 的裝箱和拆箱

2021-04-13 12:00:11 字數 1412 閱讀 9223

裝箱和拆箱:使得在c#型別系統中,任何值型別、引用型別和object型別之間進行轉換,我們稱這種轉化為繫結連線,簡單說有此功能後,對任何型別的值都可以看作是object型別。

using system;//裝箱

class test

i=20; //改變i的值;

console.writeline("int i=",i);//i=20

console.writeline("obj=",obj);//obj=20

}}//證明了被裝箱的型別的值是作為乙個拷貝賦給物件的;

拆箱轉換:指將乙個物件型別顯式地轉換成乙個值型別,或將一介面型別顯式地轉換成乙個執行該介面的值型別。可以看出拆箱過程正好是裝箱過程的逆過程。必須注意,裝箱和拆箱轉換必須遵循型別相容原則。

裝箱和拆箱:任何值型別、引用型別可以和object(物件)型別之間進行轉換。裝箱轉換是指將乙個值型別隱式或顯式地轉換成乙個object型別,或者把這個值型別轉換成乙個被該值型別應用的介面型別(inte***ce-type)。把乙個值型別的值裝箱,就是建立乙個object例項並將這個值複製給這個object,裝箱後的object物件中的資料位於堆中,堆中的位址在棧中。被裝箱的型別的值是作為乙個拷貝賦給物件的。如:

int i = 10;

object obj = i; //隱式裝箱

object obj = object(i); //顯式裝箱

if(obj is int) //int

console.writeline(「ok」);

console.writeline(obj.gettype()); //system.int32

有兩種方式來檢視包裝以後的引用物件中包裝的原始資料的型別。要判斷原始型別是否是某個給定的原子型別,用is;如果要返回乙個字串,可以用object類的gettype方法。

拆箱轉換是指將乙個物件型別顯式地轉換成乙個值型別,或是將乙個介面型別顯式地轉換成乙個執行該介面地值型別。注意裝箱操作可以隱式進行但拆箱操作必須是顯式的。拆箱過程分成兩步:首先,檢查這個物件例項,看它是否為給定的值型別的裝箱值。然後,把這個例項的值拷貝給值型別的變數。比如:

int i = 10;

object obj = i;

int j = (int)obj;

有兩種方式來檢視包裝以後的引用物件中包裝的原始資料的型別。要判斷原始型別是否是某個給定的原子型別,用is;如果要返回乙個字串,可以用object類的gettype方法。

拆箱轉換是指將乙個物件型別顯式地轉換成乙個值型別,或是將乙個介面型別顯式地轉換成乙個執行該介面地值型別。注意裝箱操作可以隱式進行但拆箱操作必須是顯式的。拆箱過程分成兩步:首先,檢查這個物件例項,看它是否為給定的值型別的裝箱值。然後,把這個例項的值拷貝給值型別的變數。比如:

int i = 10;

object obj = i;

int j = (int)obj;

C 核心概念 裝箱和拆箱 什麼是裝箱和拆箱

裝箱 boxing 和拆箱 unboxing 是c 型別系統的核心概念.是不同於c與c 的新概念!通過裝箱和拆箱操作,能夠在值型別和引用型別中架起一做橋梁.換言之,可以輕鬆的實現值型別與引用型別的互相轉換,裝箱和拆箱能夠統一考察系統,任何型別的值最終都可以按照物件進行處理.c 語言中的所有型別都是由...

C 核心概念 裝箱和拆箱 什麼是裝箱和拆箱

文章 http www.cnblogs.com xiaoshi archive 2008 05 28 1208902.html 裝 箱 boxing 和拆箱 unboxing 是c 型別系統的核心概念.是不同於c與c 的新概念!通過裝箱和拆箱操作,能夠在值型別和引用型別中架起一做橋梁.換言之,可以輕...

C 核心概念 裝箱和拆箱 什麼是裝箱和拆箱

裝箱 boxing 和拆箱 unboxing 是c 型別系統的核心概念.是不同於c與c 的新概念!通過裝箱和拆箱操作,能夠在值型別和引用型別中架起一做橋梁.換言之,可以輕鬆的實現值型別與引用型別的互相轉換,裝箱和拆箱能夠統一考察系統,任何型別的值最終都可以按照物件進行處理.c 語言中的所有型別都是由...