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#学习日记18----装箱(boxing)转换与拆箱(unboxing)转换的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan untuk Active Directory dengan C#. Di sini kita membincangkan pengenalan dan cara Active Directory berfungsi dalam C# bersama-sama dengan sintaks dan contoh.

Panduan untuk Pensirian C#. Di sini kita membincangkan pengenalan, langkah-langkah objek siri C#, kerja, dan contoh masing-masing.

Panduan untuk Penjana Nombor Rawak dalam C#. Di sini kita membincangkan cara Penjana Nombor Rawak berfungsi, konsep nombor pseudo-rawak dan selamat.

Panduan untuk Paparan Grid Data C#. Di sini kita membincangkan contoh cara paparan grid data boleh dimuatkan dan dieksport daripada pangkalan data SQL atau fail excel.

Panduan kepada Corak dalam C#. Di sini kita membincangkan pengenalan dan 3 jenis Corak teratas dalam C# bersama-sama dengan contoh dan pelaksanaan kodnya.

Panduan Nombor Perdana dalam C#. Di sini kita membincangkan pengenalan dan contoh nombor perdana dalam c# bersama dengan pelaksanaan kod.

Panduan untuk Faktorial dalam C#. Di sini kita membincangkan pengenalan kepada faktorial dalam c# bersama-sama dengan contoh dan pelaksanaan kod yang berbeza.

Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.
