Rumah >pembangunan bahagian belakang >C++ >Mengapa penukaran jenis tersirat gagal dengan pengendali bersyarat C#dan bagaimana ia dapat diselesaikan?
c# Operator bersyarat dan isu penukaran jenis tersirat
pengendali bersyarat C# (
?:
<code class="language-csharp">byte aByteValue; bool aBoolValue = true; aByteValue = aBoolValue ? 1 : 0; // Error: Cannot implicitly convert type 'int' to 'byte'</code>jenis. Oleh itu, pengendali menghasilkan hasil
, yang tidak dapat ditukar secara tersirat kepada A int
. int
byte
Tidak seperti tugasan biasa di mana jenis pembolehubah sasaran menentukan penukaran, pengendali bersyarat mengutamakan jenis cawangannya yang biasa. Dalam kes ini, kedua -dua cawangan secara tersirat boleh ditukar kepada
jenis hasil. int
int
Penyelesaiannya adalah dengan jelas melemparkan ekspresi bersyarat kepada
:
byte
<code class="language-csharp">aByteValue = aBoolValue ? (byte)1 : (byte)0; // Correct</code>, menyelesaikan ralat penukaran tersirat. Pengkompil kini memahami jenis yang dimaksudkan dan melakukan penukaran yang diperlukan dengan selamat.
Atas ialah kandungan terperinci Mengapa penukaran jenis tersirat gagal dengan pengendali bersyarat C#dan bagaimana ia dapat diselesaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!