Considérez le fragment de code suivant:
int? x = GetBoolValue() ? 10 : null;
renvoie GetBoolValue()
, la valeur 10 est attribuée à l'entier vide true
; Cependant, le compilateur marquera une erreur: x
x
null
<解> Interprétation des questions
<code>错误:无法确定条件表达式的类型,因为在 int 和 <null> 之间没有隐式转换。</code>
Cette erreur met en évidence le problème des types de non-correspondance dans l'expression de trois-yuan. L'expression gauche <返> renvoie une valeur , et l'analyse est ou
. La bonne expression tente de combiner deux expressions:
GetBoolValue()
bool
<这>, il s'agit d'un volume littéral true
(pas false
).
10
int
Le compilateur essaie d'abord d'évaluer la bonne expression. Il rencontre <面> littéral int?
et les caractères vides null
int
Afin de résoudre ce problème, la bonne expression doit être compatible avec le type de types vides. Il y a plusieurs façons: <:>
10
null
int
<字> a converti le littéralement en null
:
<空> Utilisez le type vide ou la valeur par défaut:
int?
<式> Conversion implicite
x = GetBoolValue() ? (int?)10 : null;
<<> à :
Le type videx = GetBoolValue() ? 10 : (int?)null; x = GetBoolValue() ? 10 : default(int?);
TO :
non -mptypeut être converti en vide
.int?
. null
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!