This MSDN reference parece indicar que cuando un int?
(o cualquier Nullable<T>
) tiene un valor, siempre está encuadrado (y por lo tanto un almacén de datos mucho menos eficiente, en cuanto a la memoria que un int
). Es ese el caso?son C# int? y bool? s siempre en caja cuando hasvalue = true?
Respuesta
Esa página se refiere a cuando encapsula la estructura Nullable<T>
, no los valores dentro de la propia estructura.
No hay boxeo involucrados en el almacenamiento de un tipo anulable hasta que se intenta boxeo del anulable sí:
int? a = 42; // no boxing
int? n = null; // no boxing
object nObj = n; // no boxing
object aObj = a; // only now will boxing occur
Este comportamiento no es diferente que cuando el boxeo un tipo de valor normal (con la excepción de que lleva el caso nulo) así que es realmente de esperar.
No es el caso. Nullable<T>
es genérico, por lo que contiene el real int
o bool
.
La página de MSDN está hablando de lo que sucede cuando encasillas un Nullable<int>
o Nullable<bool>
. Si nunca asigna su estructura anulable a una variable object
, no incurrirá en gastos generales de boxeo.
No. El objeto Nullable es una estructura genérica, e internamente maneja el valor de T sin boxeo.
- 1. en C# ¿Qué significa 'bool = bool! = True'?
- 2. C++ BOOL (typedef int) vs bool para rendimiento
- 3. C# no se puede transmitir bool a int
- 4. C# - son parámetros dinámicos en caja
- 5. Envío de int [] s entre Java y C
- 6. lo son "s" y "e" en C# código de sintaxis
- 7. Sumando los valores bool en C/C++
- 8. ¿Cuándo deberían usarse BOOL y bool en C++?
- 9. C99 - ¿por qué son falsos y verdaderos definidos como 0 y 1 y no como ((bool) 0) y ((bool) 1)?
- 10. C - int sizeof gama siempre devuelve 4
- 11. Objetivo-C: BOOL vs bool
- 12. No se puede convertir int a bool
- 13. Implicaciones de los valores int no "ajustados" - bool o BOOL para Objective-C?
- 14. f Demostrando (f bool) = bool
- 15. == operador de sobrecarga cuando el objeto es en caja
- 16. Forma correcta de convertir el valor BOOL en INT?
- 17. C++ sizeof con bool
- 18. Casting Y o N to bool C#
- 19. codeigniter db-> delete() devuelve true siempre?
- 20. Int Int Int y volver
- 21. ¿Por qué los vectores en caja son tan lentos?
- 22. ¿DateTime.ToString ("s") devuelve siempre el mismo formato?
- 23. ¿Está int en C siempre de 32 bits?
- 24. ¿Qué son los archivos .S?
- 25. Primitivas en caja y equivalencia
- 26. Cómo convertir int o bool a checkState
- 27. ¿Qué es Bool <true> en C++? ¿Es por impulso?
- 28. ¿Cómo puedo convertir un int a una matriz de bool?
- 29. C++ uint, unsigned int, int
- 30. Diferencia entre los tipos _Bool y bool en C?