En règle générale l'utilisation principale de la marque est question pour le conditionnel, x ? "yes" : "no"
.
Mais j'ai vu une autre utilisation, mais je ne trouve pas d'explication sur cette utilisation de l' ?
opérateur, par exemple.
public int? myProperty
{
get;
set;
}
int
type et uneInteger
classe correspondante , par exemple.C'est un raccourci pour
Nullable<int>
.Nullable<T>
est utilisé pour permettre à un type de valeur d'être défini surnull
. Les types de valeurs ne peuvent généralement pas être nuls .la source
value types
ne peut pas être nul. Si vous déclarez un int ou un bool (qui sont des types de valeur) sans assigner spécifiquement une valeur, ils auraient toujours des valeurs (0 et false, respectivement), c'est-à-dire. ils ne seraient pas nuls. Unassignedreference types
, tel que object ou MyClass, sera, en revanche, nul. Vous voudrez peut-être lire la différence entre les types de valeur et les types de référence.Dans
le ? déclare une phrase if . Ici: x représente la condition booléenne; La partie avant le : est la phrase alors et la partie après est la phrase else .
Dans, par exemple,
le ? déclare un type nullable et signifie que le type avant lui peut avoir une valeur nulle.
la source
return value ? value : "isNull";
me dit que cestring value
n'est pas convertible en bool.la source
il déclare que le type est nullable.
la source
utilisation pratique:
la source
Pour compléter les réponses ci-dessus, voici un exemple de code
Cela donnerait une erreur de compilation:
Notez qu'il n'y a pas d'erreur de compilation pour NullableTest. (notez le? dans la déclaration de t2)
la source
int?
est un raccourci pourNullable<int>
. Les deux formes sont interchangeables.Nullable<T>
est un opérateur que vous pouvez utiliser avec un type de valeurT
pour le faire accepternull
.Si vous ne savez pas: types valeur sont des types qui accepte les valeurs comme
int
,bool
,char
etc ...Ils ne peuvent pas accepter les références aux valeurs: ils généreraient une erreur au moment de la compilation si vous leur affectiez un
null
, contrairement aux types de référence , qui peuvent évidemment l'accepter.Pourquoi auriez-vous besoin de ça? Parce que parfois, vos variables de type valeur peuvent recevoir des références nulles renvoyées par quelque chose qui ne fonctionne pas très bien, comme une variable manquante ou non définie renvoyée par une base de données.
Je vous suggère de lire la documentation Microsoft car elle couvre assez bien le sujet.
la source