Maison > développement back-end > C++ > Pourquoi la conversion de type implicite échoue-t-elle avec l'opérateur conditionnel de C # et comment peut-il être résolu?

Pourquoi la conversion de type implicite échoue-t-elle avec l'opérateur conditionnel de C # et comment peut-il être résolu?

Barbara Streisand
Libérer: 2025-01-24 13:51:09
original
1020 Les gens l'ont consulté

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

Problèmes d'opérateur conditionnel C# et de conversion de type implicite

L'opérateur conditionnel C# (?:) peut provoquer des erreurs de conversion de type inattendues. Un scénario courant consiste à attribuer une valeur booléenne à une variable d'octet :

<code class="language-csharp">byte aByteValue;
bool aBoolValue = true;
aByteValue = aBoolValue ? 1 : 0; // Error: Cannot implicitly convert type 'int' to 'byte'</code>
Copier après la connexion

Ce code échoue car le type de l'opérateur conditionnel est déterminé par ses opérandes (1 et 0). C# traite ces nombres littéraux comme des types int. L'opérateur produit donc un résultat int, qui ne peut pas être implicitement converti en byte.

Contrairement à l'affectation typique où le type de la variable cible dicte la conversion, l'opérateur conditionnel donne la priorité au type commun de ses branches. Dans ce cas, les deux branches sont implicitement convertibles en int, faisant de int le type de résultat.

Résolution : diffusion explicite

La solution consiste à convertir explicitement l'expression conditionnelle en byte :

<code class="language-csharp">aByteValue = aBoolValue ? (byte)1 : (byte)0; // Correct</code>
Copier après la connexion

Cette conversion explicite garantit que l'expression conditionnelle est évaluée comme un byte, résolvant ainsi l'erreur de conversion implicite. Le compilateur comprend désormais le type souhaité et effectue la conversion nécessaire en toute sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal