12
votes

sont c # int? et bool? s toujours en boîte quand hasvalue = true?

Cette référence MSDN semble indique que lorsqu'un int? (ou tout nullable ) a une valeur, elle est toujours en boîte (et donc un magasin de données de mémoire beaucoup moins efficace, de mémoire que un int ). Est-ce le cas?


0 commentaires

3 Réponses :


13
votes

Cette page fait référence au moment où vous boxez le nullable struct, pas les valeurs à l'intérieur de la structure elle-même.

Il n'y a pas de boxe impliquée dans la conservation d'un type nullable avant d'essayer la boxe Le nullable lui-même: xxx

Ce comportement n'est pas différent de celui de la boxe d'une valeur normale de type (à l'exception de la manipulation du boîtier NULL), il est donc vraiment à prévoir. < / p>


0 commentaires

2
votes

Ce n'est pas le cas. Nullable est générique, il contient donc le vrai int ou bool .

La page MSDN parle de ce qui se passe lorsque vous encadrez un nullable ou nullable . Si vous n'attribuez jamais votre création nullable à une variable objet , vous n'entraînerez pas la boîte aérienne en boxe.


0 commentaires

3
votes

non. L'objet nullable est une structure générique et gère la valeur de T sans la boxe.


0 commentaires