C #: conversion implicite entre '& lt; null & gt;' et 'bool'
J'ai reçu un drôle de message d'erreur quand j'ai essayé de convertir un object
à bool
voici mon code:
public partial class ModifierAuteur : DevExpress.XtraEditors.XtraForm
{
public ModifierAuteur(object getKeyDecesCheckBox)
{
decesCheckBox.Checked = getKeyDecesCheckBox == null ? null : (bool)getKeyDecesCheckBox;
}
}
et c'est le message d'erreur :
Type d'expression conditionnelle ne peut pas être déterminé, car il est
pas de conversion implicite entre<null>
etbool
source d'informationauteur user1726655
Vous devez vous connecter pour publier un commentaire.
En supposant que l'affectation est possible, vous avez besoin de les convertir à un nullable
bool
comme ceci:L'intérieur fonte à
bool
unboxes la valeur, et l'extérieur en fonte d'bool?
le rend compatible avecnull
de l'expression conditionnelle.Si le côté gauche de la mission ne permettent pas de
null
s, vous devez décider de la valeur à définir lors de lagetKeyDecesCheckBox
estnull
. Généralement, c'est unfalse
:En supposant que la propriété Checked est de type nullable bool, je serais probablement faire ce qui suit:
Si elle prend un bool (pas les valeurs null), vous pouvez convertir la valeur null false facilement avec:
decesCheckBox.Checked
est de typebool
. En tant que tel, vous devez nourrir ce soitfalse
outrue
.Votre"? :' opérateur dispose de deux incompatible types de retour: si l'objet est null, alors il retourne la valeur null, ce qui peut être lancé à tout type nullable. Si l'objet n'est pas null, alors son type de retour est de type bool.
Je ne sais pas quel type de 'Vérifié' est, mais je pense qu'il est de type 'bool'.
Le problème ici est que vous ne pouvez pas lancer la valeur null à la 'bool' type, et donc vous devez décider quel type vous voulez qu'il soit, dans le cas où l'objet est null. Si vous voulais que ce soit faux, vous pourriez écrire l'instruction:
L' ?? L'opérateur attribue la valeur "false" dans le cas où l'objet est null, ou ne peut pas être converti en booléen.