Sebab mengapa short = short
berfungsi tetapi short = short short
tidak berfungsi dalam C#
Dalam pengaturcaraan, pengurusan jenis data adalah penting. Dalam C#, perangkap biasa apabila berurusan dengan integer pendek ialah operator =
berkelakuan berbeza daripada yang dijangkakan pada pembolehubah integer pendek. Mari kita mendalami isu ini.
Masalahnya
Pertimbangkan kod C# berikut:
<code class="language-csharp">short a, b; a = 10; b = 10; a = a + b; // 错误:无法隐式转换类型“int”为“short”。 // 我们也可以使用算术赋值运算符编写此代码,如下所示 a += b; // 但此代码可以成功运行,为什么? Console.Write(a);</code>
Dalam baris pertama, memberikan a b
kepada pembolehubah short
a
akan menyebabkan ralat. Ini kerana hasil tambah dua pendek ialah int
dan tidak boleh ditukar secara tersirat kepada short
. Walau bagaimanapun, menggunakan =
pada baris kedua berjaya disusun. kenapa ni?
Memahami aritmetik integer
Jawapannya terletak pada cara aritmetik integer berfungsi dalam C#. Hasil penambahan integer ialah int
, tanpa mengira jenis data operan. Ini mengelakkan risiko limpahan integer, yang boleh berlaku jika keputusan short short
ialah short
.
=
Operator
=
ialah singkatan untuk a = a b
. Mengikut spesifikasi C#, jika jenis pemulangan pengendali boleh ditukar secara tersirat kepada jenis x (dalam kes ini, short
), maka operasi itu dinilai kepada x = (T)(x op y)
, dengan T ialah jenis x .
Untuk a = b
, pengkompil memasukkan hantaran yang diperlukan untuk menukar hasil a b
(iaitu, int
) kepada short
. Ini membolehkan tugasan kompaun berfungsi seperti yang diharapkan.
Kesimpulan
Walaupun gelagat penjumlahan integer dalam C# mungkin mengelirukan pada mulanya, memahami peraturan pengendali aritmetik dan tugasan asas adalah penting untuk mengelakkan tingkah laku yang tidak dijangka dan menulis kod yang mantap. Dengan mengurus jenis data dengan teliti dan menggunakan operator =
dengan betul, pembangun boleh memastikan program mereka berkelakuan seperti yang diharapkan.
Atas ialah kandungan terperinci Mengapakah `short = short` Berfungsi Manakala `short = short short` Tiada dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!