¿Cuál es la diferencia detrás de escena entre 'int'? y 'int'? Es 'int' de alguna manera un tipo de referencia?¿Cómo funcionan los tipos que aceptan nulos en C#?
Respuesta
? envuelve el tipo de valor (T) en un Anulable <T> struct:
Además de "int?" Al ser un atajo para "Nullable", también había infraestructura puesta en el CLR para convertir implícita y silenciosamente entre "int". y "int". Esto también significa que cualquier operación de boxeo incluirá implícitamente el valor real (es decir, es imposible encapsular Nullable como Nullable, siempre da como resultado el valor encasillado de T o un objeto nulo).
Me encontré con muchos de estos problemas al intentar crear Nullable cuando no se conoce T en el momento de la compilación (solo se sabe en tiempo de ejecución). http://bradwilson.typepad.com/blog/2008/07/creating-nullab.html
Para una de las mejores discusiones "tras bambalinas" sobre tipos Nullable debe mirar CLR Via C# por Jeffrey Richter.
Todo el Capítulo 18 está dedicado a discutir en detalle los tipos Nullable. Este libro también es excelente para muchas otras áreas de .NET CLR internal.
- 1. ¿Cómo comparar tipos que aceptan nulos?
- 2. F #: ¿Por qué los tipos de opciones no son compatibles con los tipos que aceptan nulos?
- 3. LINQ Comportamiento agregado de tipos que aceptan nulos.
- 4. XmlSerializer y atributos que aceptan nulos
- 5. ¿Cómo puedo acercarme a los tipos de referencia que no admiten nulos en C# hoy?
- 6. ¿Cómo puedo declarar en C sharp a List con valores dobles que aceptan nulos?
- 7. ¿Por qué no debo usar siempre tipos que aceptan valores de nulo en C#
- 8. ¿Cómo obtener el código de Entity Framework? ¿Funcionan las primeras y las propiedades de claves foráneas que aceptan nulos?
- 9. Crear tipos que no admiten valores en C#
- 10. Cómo funcionan los genéricos en C++/CX
- 11. ¿Cómo funcionan los constructores estáticos para los tipos genéricos?
- 12. Cómo funcionan los tipos de parámetros covariantes en java
- 13. ¿El ajuste de columnas que aceptan nulos en ISNULL causa escaneos?
- 14. ¿Cómo funcionan los métodos asíncronos en C#?
- 15. ¿Cómo funcionan los enchufes en C?
- 16. ¿Cómo funcionan los métodos virtuales en C#?
- 17. ¿Cómo funcionan los eventos virtuales en C#?
- 18. ¿Cómo se implementan los tipos anulables bajo el capó en .net?
- 19. ¿Cómo manejan los tipos anulables los valores nulos con los operadores de comparación?
- 20. ¿Tiene Scala un método de biblioteca para ajustar los valores de retorno que aceptan nulos en una Opción?
- 21. ¿Por qué los tipos personalizados aceptan atributos ad-hoc en Python (y los built-ins no)?
- 22. Cómo los servidores HTTP aceptan Telnet
- 23. ¿Cómo me aseguro de que Linq a Sql no anule ni viole valores predeterminados de DB que no aceptan nulos?
- 24. Excepción durante la corrección de asociación con claves externas compuestas que aceptan nulos
- 25. Tipos de referencia que no admiten nulos (una vez más)
- 26. ¿Cómo funcionan los operadores de C++
- 27. ¿Cómo funcionan los greenlets?
- 28. ¿Cómo deben usarse los tipos anónimos en C#?
- 29. MPMediaPickerController con tipos de medios de video que no funcionan
- 30. ¿Java tiene "propiedades" que funcionan de la misma manera que las propiedades funcionan en C#?