C#學習日記18----裝箱(boxing)轉換與拆箱(unboxing)轉換
經過前面的學習,我們基本上能夠實現值類型與值類型之間的轉換,引用類型與引用類型之間的轉換,但是值類型與引用類型(object)之間的轉換又該怎麼實現呢? ?
在C# 中,我們採用裝箱來實現將值類型轉換成引用類型,用拆箱實現將引用類型轉換成值類型;換句話說,它可以實現從任何值類型、引用類型到Object類型之間的轉換,有了裝箱與拆箱對任何類型來說我們都可以看作object 類型 (有關object 類型的內容可以點擊 引用類型----object類 進入)
裝箱轉換: 這裡我要補充一下,在.NET中,資料型別劃分為值型別和參考(不等同於C++的指標)型,與此對應,記憶體分配分成了兩種方式,一為棧,二為堆, (是託管堆。)值類型只會在堆疊中分配。引用型別分配記憶體與託管堆。
寫個例子:
int i = 123; object o = i; //实现装箱操作,其实也是隐式转换。
裝箱轉換的原理圖如下:
裝箱轉換實質上是一種複製類型轉換,也就是說當我們完成裝箱後,再改變i 的值o 的值不會改變
拆箱轉換:
和裝箱轉換剛好相反,拆箱轉換是指將一個物件類型顯示的轉換為一個值型,拆箱的過程分為兩步,首先,檢查這個物件實例,看他是否為給定的值類型的裝箱值,然後,把這個實例的值拷貝給值類型的變數;
寫個例子(基於上面的裝箱代碼):
int n_int = (int)o; //强制将object类型转换为int 类型
可以看出剛好是裝箱的逆過程,將物件強制轉換為原來的類型,必須注意的是,拆箱的值必須和它要轉換的目標的變數有相同的類型。
在這裡我有必要強調的是裝箱和拆箱是 從值類型或引用類型到object類型的轉換,從object類型到值類型或引用類型的轉換.
以上就是C#學習日記類型到值類型或引用類型的轉換.
以上就是C#學習日記類型18-- --裝箱(boxing)轉換與拆箱(unboxing)轉換的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。
