Rumah > pembangunan bahagian belakang > C++ > Mengapa penukaran jenis tersirat gagal dengan pengendali bersyarat C#dan bagaimana ia dapat diselesaikan?

Mengapa penukaran jenis tersirat gagal dengan pengendali bersyarat C#dan bagaimana ia dapat diselesaikan?

Barbara Streisand
Lepaskan: 2025-01-24 13:51:09
asal
1045 orang telah melayarinya

Why Does Implicit Type Conversion Fail with C#'s Conditional Operator and How Can It Be Resolved?

c# Operator bersyarat dan isu penukaran jenis tersirat

pengendali bersyarat C# () boleh menyebabkan kesilapan penukaran jenis yang tidak dijangka. Senario biasa melibatkan memberikan nilai boolean kepada pemboleh ubah byte:

?:

Kod ini gagal kerana jenis pengendali bersyarat ditentukan oleh operannya (1 dan 0). C# merawat nombor literal ini sebagai
byte aByteValue;
bool aBoolValue = true;
aByteValue = aBoolValue ? 1 : 0; // Error: Cannot implicitly convert type 'int' to 'byte'
Salin selepas log masuk
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

, membuat

jenis hasil. int int

Resolusi: Pemutus eksplisit

Penyelesaiannya adalah dengan jelas melemparkan ekspresi bersyarat kepada

:

byte

Pelakon eksplisit ini memastikan ekspresi bersyarat menilai kepada
aByteValue = aBoolValue ? (byte)1 : (byte)0; // Correct
Salin selepas log masuk
, 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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan