1樓:
下面的好全,就下面的吧
說明c#中的裝箱與拆箱的概念
2樓:匿名使用者
所謂裝箱和拆箱是一個很抽象的概念
裝箱是將值型別轉換為引用型別
拆箱是將引用型別轉換為值型別
利用裝箱和拆箱功能,可通過允許值型別的任何值與object 型別的值相互轉換,將值型別與引用型別連結起來
例如:int val = 100;
object obj = val;
console.writeline (「物件的值 = ", obj);
這是一個裝箱的過程,是將值型別轉換為引用型別的過程int val = 100;
object obj = val;
int num = (int) obj;
console.writeline ("num: ", num);
這是一個拆箱的過程,是將值型別轉換為引用型別,再由引用型別轉換為值型別的過程
ps:被裝過箱的物件才能被拆箱
j**a 為什麼要有裝箱和拆箱?
什麼是裝箱與拆箱?為什麼要裝箱與拆箱?裝箱與拆箱的本質是什麼?
3樓:一可丁
裝箱是值型別轉成object引用型別,拆箱是已被裝箱的引用型別轉成原來的值型別。
裝箱和取消裝箱使值型別能夠被視為物件。
對值型別裝箱將把該值型別打包到 object 引用型別的一個例項中。
這使得值型別可以儲存於垃圾**堆中。
取消裝箱將從物件中提取值型別。
裝箱是值型別到object型別或到此值型別所實現的任何介面型別的隱式轉換。
對值型別裝箱會在堆中分配一個物件例項,並將該值複製到新的物件中。
取消裝箱是從 object 型別到值型別或從介面型別到實現該介面的值型別的顯式轉換。
取消裝箱操作包括:
檢查物件例項,確保它是給定值型別的一個裝箱值。
將該值從例項複製到值型別變數中。
要在執行時成功取消裝箱值型別,
被取消裝箱的項必須是對一個物件的引用,
該物件是先前通過裝箱該值型別的例項建立的。
嘗試對 null 或對不相容值型別的引用進行取消裝箱操作,將導致 invalidcastexception。
裝箱和拆箱是為了程式設計模式的簡單,任何物件都應當可以賦給object,
對於引用型別賦給object沒問題,都是引用型別,只是一個引用的賦值,
但是值型別賦給object就有問題了,因為值型別沒有引用,
為了造出一個引用,也就有了裝箱。
j**a 什麼是拆箱和裝箱,拆箱和裝箱 嘛用啊???
4樓:快樂的路人甲
裝箱就是把基礎型別封裝成一個類。比如把int封裝成integer,這時你就不能把他當成一個數了,而是一個類了,對他的操作就需要用它的方法了。拆箱就是把類轉換成基礎型別。
比如你算個加法什麼的是不能用類的,就得把它轉換成基本型別,jdk5以後已經可以自動轉換了貌似。基本型別你應該懂的吧,就那八種
5樓:南城之舟
拆箱是把「引用」型別轉換成「值」型別;
裝箱是把「值」型別轉換成「引用型別」;
原因是有時某些方法的引數要求使用「引用」型別,而你想把「值」型別的變數通過這個引數傳入,就需要使用這個操作。
6樓:匿名使用者
給你打個比方吧;
假如碼頭上有很多貨物 這些貨物需要裝到集裝箱才能裝船運走(這個可以比作把自定義變數打包) 把這個步驟比作裝箱
那麼 當解除安裝貨物時候 需要開啟集裝箱 然後發往各處(這個可以比作 值得呼叫) 把這個步驟比作拆箱
裝箱與拆箱的 區別
7樓:懷晴曦
什麼叫區別,根本就是兩個反向的過程!
裝箱就是把值型別轉換成引用型別,反之就是拆箱int a=5;
string ss=a;裝箱
int a2=int.parse(ss);拆箱
8樓:
你只要記得裝箱就是把值型別轉換成引用型別
拆箱是把引用型別轉換成值型別 這句話就可以了、然後通過以後**的累積。自然就會明白
9樓:匿名使用者
裝箱,拆箱是很耗效率的
具體值型別和引用型別估計你也不知道
你一般寫的類是class型別的,你自己寫個類class1,繼承一個父類class2
你把class1物件的資料轉換成 (class2)class1 這個是型別轉換,不是裝箱拆箱!因為都是引用型別
所有的類都是繼承於object的 其中,system.int32(就是int類的全類名),這個就是值型別的,但是可以轉換成父類的object 比如說 object obj = (object)1; 這個就是裝箱,然後再把引用搞回值型別,就是拆箱了
引用型別就是class,值型別就是struct裝箱是把值型別轉換成引用型別
拆箱是把引用型別轉換成值型別
10樓:匿名使用者
裝箱就是值型別轉換為object型別,拆箱相反:object轉化為值型別
裝箱使任何事物看起來都像是一個物件,即裝箱是一種讓值型別看起來好像引用型別的處理過程。這樣才符合物件導向把一切事物都看成物件的思想。當然有裝箱就有拆箱。
11樓:斑駁de過往
裝箱就是把值型別轉換成引用型別
拆箱是把引用型別轉換成值型別
什麼是裝箱和拆箱並使用**舉例說明
12樓:匿名使用者
拆箱是把「引用」型別轉換成「值」型別;裝箱是把「值」型別轉換成「引用型別」;原因是有時某些方法的引數要求使用「引用」型別,而你想把「值」型別的變數通過這個引數傳入,就需要使用這個操作。拆箱和裝箱其實就是型別轉換在c#裡那麼叫裝箱:低型別-->高型別例:
objecti="aa";這個是string-->object叫裝箱拆箱:高型別-->低型別例:stringi=(string)object;這個是string-->int叫拆箱例如:
boolaa=true;objectbb=aa;//裝箱說大白話就是:不用它們你就轉不了型兒。。。沒別的。。。
裝箱和拆箱有什麼優缺點?
13樓:
裝箱是把值型別轉換為引用資料型別,可以當做物件使用,可以使用對應包裝型別的方法處理資料,拆箱者相反。
14樓:匿名使用者
優點:就是可以裝箱把值型別轉換為引用型別,拆箱把引用型別轉換為值型別;
缺點:轉換的過程中,影響持續的效率。
15樓:匿名使用者
裝箱是將值型別轉換為值型別,拆箱就是將己轉換為引用型別的值型別轉換回來
裝箱 :int i=10;
object o=i;
拆箱:int j=(int)o;
裝箱和拆箱是非常影響程式效能的,在**中應避免裝箱和拆箱的操作。可以使用泛型來減少這樣的操作。
希望回答對你有幫助!不明白的問我
16樓:寒心啊兄弟
裝箱是將值型別轉換為引用型別,拆箱是將引用型別轉換為值型別,恰好相反,但是拆箱時只能拆為裝箱前的資料型別,比如int a=1;object b=a;(這是裝箱),int c=(int)b;(這是拆箱)
集裝箱封號是做什麼用的,集裝箱加封是什麼意思?
集裝箱封號,是獨一無二的,如果客戶拿到的集裝箱封條上號碼跟提單上一致,就代表集裝箱沒有開啟過,貨物完好無損。集裝箱封號不是嘜頭,嘜頭指貨物的包裝印刷標記,不是同一件事情。集裝箱封號印在集裝箱封條上,就相當於集裝箱的一個鎖,但是隻能用一次,開啟之後就壞了,不能再用了。保證了安全性。 提櫃後就有鉛封號,...
海運提單與集裝箱提單的區別,提單和海運提單有什麼區別
向日葵 1 目的不同 提單是船公司出的提單,只要有海運提單,任何人都可以在目的港直接向船公司提貨。貸代提單是貨代基於海運提單出的提單,需要在目的港的指定 或分公司換取海運提單。如果想預付運費並快捷提貨,就出海運蝗單,還可以省十幾美金換單費。如果想控制貨權 運費到付等,就要出貸代提單,貨代可以幫做到這...
外貿裝箱單上的meas是什麼意思?cbm是什麼意思
你好嗎快樂嗎 meas可以理解是 貨物的體積,是measurement的縮寫。根據貨物外包裝的長 寬 高,核算出來貨物總的體積。cbm是立方數,是cubicmeter的縮寫,在裝箱單裡一般是指貨物總的立方數。拓展資料 外貿制單就是根據實際進出口 情況提供在 過程中所需要單據。專業的來說是從報關單據開...