En C#, les types primitifs nullables (i.e. bool?
) ne sont que des alias de leurs Nullable<T>
ou existe-t-il une différence entre les deux ?
Réponses
Trop de publicités?Si vous regardez l'IL en utilisant Ildasme vous constaterez qu'ils se compilent tous les deux en Nullable<bool>
.
Je suis surpris que personne ne soit encore allé à la source (la spécification C#). D'après §4.1.10 Nullable types :
Un type nullable s'écrit T ?, où T est le type sous-jacent. Cette syntaxe est une abréviation de System.Nullable<T>, et les deux formes peuvent être utilisées de manière interchangeable.
Donc, non, il n'y a pas de différence entre les deux formes. (En supposant que vous n'ayez pas d'autre type appelé Nullable<T>
dans tous les espaces de noms que vous utilisez).
A Nullable<T>
est une structure composée d'un T et d'un drapeau binaire indiquant si le T est valide ou non. A Nullable<bool>
a trois valeurs possibles : true, false et null.
Editer : Ah, j'avais oublié que le point d'interrogation après "bool" faisait en fait partie du nom du type et n'était pas un indicateur que vous posiez une question :). La réponse à votre question est donc "oui, le système C# bool?
est juste un alias pour Nullable<bool>
".