Pengenalan
Dalam C#, bertinju dan membuka kotak adalah mekanisme yang diperlukan untuk menyelaraskan gelagat berbeza jenis nilai dan jenis rujukan. Walau bagaimanapun, tujuan dan kes penggunaannya boleh mengelirukan pengaturcara. Panduan ini menerangkan sebab konsep ini penting dan menyediakan contoh aplikasi praktikalnya.
Kepentingan Pembungkusan dan Membuka Kotak
Tinju dan unboxing membolehkan C# mengekalkan sistem jenis bersatu supaya jenis nilai dan jenis rujukan boleh berinteraksi dan diproses secara konsisten. Jenis nilai, seperti short dan int, menyimpan data mereka secara langsung dalam pembolehubah. Sebaliknya, jenis rujukan merujuk kepada objek asas yang terletak di tempat lain dalam ingatan.
Untuk memudahkan interaksi lancar antara struktur data yang berbeza ini, tinju mencipta objek pembalut yang mengandungi data jenis nilai supaya ia boleh dianggap seperti jenis rujukan. Ini memudahkan untuk menyimpan dan memanipulasi jenis nilai dalam struktur data yang direka bentuk untuk jenis rujukan.
Senario aplikasi tinju dan nyahbox
Kes penggunaan klasik untuktinju menggunakan koleksi warisan, yang hanya menerima objek. Koleksi ini memerlukan tinju untuk menyimpan jenis nilai, seperti yang ditunjukkan dalam contoh ArrayList:
<code class="language-c#">short s = 25; object objshort = s; // 装箱</code>
Dalam era generik moden, keperluan untuk tinju telah berkurangan. Walau bagaimanapun, ia masih penting dalam senario tertentu:
<code class="language-c#">double e = 2.718281828459045; int ee = (int)e; // 从double到int的隐式转换(需要装箱)</code>
<code class="language-c#">double e = 2.718281828459045; object o = e; // 装箱 int ee = (int)(double)o; // 拆箱和显式转换</code>
Butiran yang memerlukan perhatian
<code class="language-c#">double e = 2.718281828459045; object o1 = e; object o2 = e; Console.WriteLine(o1 == o2); // False</code>
<code class="language-c#">[struct|class] Point { ... } Point p = new Point(1, 1); object o = p; p.x = 2; Console.WriteLine(((Point)o).x); // 输出:1(如果为结构体)/ 2(如果为类)</code>
Atas ialah kandungan terperinci C# Boxing dan Unboxing: Bila dan Mengapa Kita Memerlukannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!