web-dev-qa-db-fra.com

Quelle est la différence entre 'int?' et 'int' en C #?

Je suis sûr à 90% que j'ai déjà vu cette réponse sur stackoverflow, en fait je n'avais jamais vu le "int?" syntaxe avant de la voir ici, mais peu importe la façon dont je cherche, je ne trouve pas le post précédent, et ça me rend folle.

Il est possible que je mange des champignons amusants par accident, mais si ce n'est pas le cas, quelqu'un peut-il indiquer le message précédent s'il peut le trouver ou le réexpliquer? Mon stackoverflow search-fu est apparemment trop bas ....

71
cori

int? est un raccourci pour Nullable<int>.

Ceci peut être le poste que vous cherchiez.

105
Forgotten Semicolon
29
KyleLanser

int? est la même chose que Nullable. Cela vous permet d'avoir des valeurs "null" dans votre int.

22
Charles Graham

int appartient à System.ValueType et ne peut pas avoir la valeur null. Lorsqu'il s'agit de bases de données ou d'autres types où les éléments peuvent avoir une valeur null, il peut être utile de vérifier si l'élément est null. C'est quand int? entre en jeu. int? est un type nullable pouvant avoir des valeurs allant de -2147483648 à 2147483648 et null.

Référence: https://msdn.Microsoft.com/en-us/library/1t3y8s4s.aspx

6
Krishnaveni B

le symbole ? après que int signifie qu'il peut être annulé. 

Le ? Le symbole est généralement utilisé dans des situations dans lesquelles la variable peut accepter une valeur NULL ou un nombre entier ou encore renvoyer un nombre entier ou une valeur NULL. 

J'espère que le contexte d'utilisation aide. De cette façon, vous n'êtes pas obligé de traiter uniquement des entiers. 

0
sanmatrix

Int ne peut pas accepter null, mais si le développeur utilise int? alors vous stockez null dans int comme int i = null; // ne pas accepter int? i = nul; // son fonctionnement est principalement utilisé pour la pagination dans MVC Pagelist

0
Fahad Jamal uddin

vous pouvez l'utiliser lorsque vous attendez une valeur nulle dans votre entier, en particulier lorsque vous utilisez CASTING ex:

x= (int)y;

si y = null, alors vous aurez une erreur. .__ vous devez utiliser: 

x = (int?)y;
0