Memahami short = short
Gelagat C#
Menambah secara langsung dua short
pembolehubah dalam C# menghasilkan int
disebabkan potensi limpahan, yang membawa kepada ralat pengkompil jika anda cuba memberikan hasil kembali kepada short
:
<code class="language-csharp">Error: Cannot implicitly convert type 'int' to 'short'.</code>
Walau bagaimanapun, menggunakan operator penugasan kompaun =
berkesan:
<code class="language-csharp">short a = 10; short b = 20; a += b; // This compiles and runs without error. Why?</code>
Sebab Disebalik Perbezaan
Kuncinya terletak pada cara pengkompil C# mengendalikan pengendali tugasan kompaun. Semasa menambah dua nilai short
menghasilkan int
, operator =
secara tersirat menghantar hasil int
kembali ke short
sebelum tugasan. Ini bersamaan dengan:
<code class="language-csharp">a += b; // Is the same as: a = (short)(a + b);</code>
Pelakon tersirat ini mengelakkan ralat penukaran eksplisit, mendayakan kod ringkas untuk operasi aritmetik biasa. Pengkompil pada dasarnya mengendalikan potensi kehilangan data yang berkaitan dengan penukaran. Tingkah laku ini direka untuk kemudahan dan untuk mencerminkan kefungsian operator serupa dalam bahasa lain. Pengoptimuman pengkompil mengelakkan keperluan untuk lebih banyak kod verbose.
Atas ialah kandungan terperinci Mengapakah `short = short` Berfungsi dalam C# Walaupun Ralat Penukaran Tersirat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!