C#装箱,拆箱和强制转换(转)
生活随笔
收集整理的這篇文章主要介紹了
C#装箱,拆箱和强制转换(转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
出處:https://www.cnblogs.com/fengjiulin110120/p/6605739.html
關系:
強制轉換就包含有裝箱拆箱操作,裝箱就是把值類型轉換成引用類型,反之就是拆箱.
?
一: 裝箱和拆箱:
裝箱是把值類型轉換成引用類型,而拆箱是把引用類型轉換成值類型;
利用裝箱和拆箱功能,可通過允許值類型的任何值與Object 類型的值相互轉換,將值類型與引用類型鏈接起來.
?例如:?
int val = 100;?
object obj = val;?
Console.WriteLine (“對象的值 = {0}", obj);?
這是一個裝箱的過程,是將值類型轉換為引用類型的過程
int val = 100;?
object obj = val;?
int num = (int) obj;?
Console.WriteLine ("num: {0}", num);?
這是一個拆箱的過程,是將值類型轉換為引用類型,再由引用類型轉換為值類型的過程?
注意:被裝過箱的對象才能被拆箱;
二: 內存分配:
值類型只會在棧中分配。
??????引用類型分配內存與托管堆。
??????托管堆對應于垃圾回收。
三: 強制轉換:
? ?(引用)
1.任何一門編程語言均有相關數據類型。C#也不例外,其基本數據類型有int,short,long,float,double,string等。數據類型之間可以相互轉換。不過轉換過程要注意小類型能轉換成大類型,但大類型一般不能轉換成小類型,也就是說低精度無條件轉高精度,高精度轉低精度需要添加轉換條件。如int型可以轉換成float型,但float型不一定可以轉換成int型,至少這在C,C++是這樣,但在C#中明顯有了改變.例如:
double dbl_num=12345678910.456;
int k = (int) dbl_num ;//此處運用了強制轉換
以上代碼如果在C,C++中強制轉換成int型,肯定會出錯,但現在在C#中卻不會出錯了,不過轉換后的值往往是溢出值,是不精通的。這點需要大家注意。
2.采用另一種方式轉換類型,如int.parse(),int32.parse()等采用方法來轉換.
如string str="100";
int i=int.Parse(str);
注意:str除掉引號的類型必須和*.Parse的類型一致。如果將100改成100.78,即變成float類型,運行時將會報錯”輸入字符串的格式不正確.”
3.采用后綴式轉換,如k.toString(),一般運用于字符串或日期等其它類型
int i=100;
string s=i.ToString();
4.采用Convert類來實現轉換,該類基本支持所以類型之間的轉換
string str="100";
int i = Convert.ToInt16(str);
注意:str除掉引號的類型必須和Convert.*的類型一致。如果將100改成100.78,即變成float類型,運行時將會報錯”輸入字符串的格式不正確.”
?
轉載于:https://www.cnblogs.com/smileberry/p/9914735.html
總結
以上是生活随笔為你收集整理的C#装箱,拆箱和强制转换(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《算法进阶指南》最小生成树剩余题目
- 下一篇: [UWP]了解IValueConvert