si los tipos de valor y el tipo de referencia son del tipo de objeto que es un tipo de referencia, cómo el tipo de valor es el tipo de valor y el tipo de referencia referencia cuando todos provienen del tipo de referencia.Tipo de valor Vs Tipo de referencia - Clase de objeto C#
7
A
Respuesta
12
Básicamente, es un tramposo ;-P
Cualquier struct
(es decir, nada heredado de ValueType
) se trata con la semántica de tipo valor. Pero hay una conversión de box a object
según sea necesario; lo que significa que si echas un struct
a un object
, creará un objeto especial (en el montón administrado) que contenga los datos (como un clon) de tu valor *.
La versión en caja es un tipo de referencia. Puede desempaquetar esto (mediante conversión) de nuevo a la versión struct
, que invierte esto (copia los datos de los clones del objeto en el montón en su valor local).
* = a no ser que se trata de un vacío Nullable<T>
, cuales cajas para null
; del mismo modo, null
unboxes a un Nullable<T>
vacío.
Cuestiones relacionadas
- 1. Genéricos C#: tipo de referencia vs. valor
- 2. tipo de valor tipo de objeto de referencia en javascript
- 3. ¿Qué pasar? ¿Objeto de referencia o tipo de valor?
- 4. C# - Contenedor de referencia para el tipo de valor
- 5. ¿Mantiene la referencia a cualquier tipo de objeto en C++?
- 6. C# Paso tipo de referencia directamente vs parámetro out
- 7. tipo Clase C Objetivo
- 8. ¿Almacenar una referencia a un tipo de valor?
- 9. ¿Cuándo es útil una restricción de tipo de valor/tipo de referencia en C#?
- 10. clase() vs. tipo() en Ruby
- 11. Clase de miembros estáticos vs. interfaz normal tipo c
- 12. ¿Puede un tipo ser un tipo de referencia y un tipo de valor al mismo tiempo?
- 13. Python: terminología 'clase' VS 'tipo'
- 14. C# Comparación del tipo de objeto
- 15. Especifique el valor predeterminado para un tipo de referencia
- 16. semántica del tipo de retorno de referencia r-valor?
- 17. Pasando objeto funtor por valor vs por referencia (C++)
- 18. tipo de clase C++ como argumento
- 19. Verifique si un objeto dado (referencia o tipo de valor) es igual a su valor predeterminado
- 20. Tipo de objeto de fundición en C#
- 21. Convierta el tipo de referencia C# al tipo de referencia no por correspondencia
- 22. ¿Puede AutoMapper Map entre un tipo de valor (Enum) y un tipo de referencia? (Cadena)
- 23. Tipo de objeto en Java y matrices de referencia
- 24. pregunta con respecto al valor de tipo/referencia de eventos
- 25. C tipo de diseño de tipo Pregunta
- 26. ¿Tipo de objeto tipo mapa en PL/SQL?
- 27. Obtener referencia de estilo C# de tipo CLR nombre completo
- 28. Valor entero de tipo flotante en C
- 29. ¿Se considera Guid un tipo de valor o un tipo de referencia?
- 30. ¿Es posible crear un método genérico de C# que acepte el tipo de valor (anulable) y el tipo de referencia?
¿Puede explicarme o señalar un enlace sobre cómo está sucediendo la magia (trampa)? es decir, Struct es un tipo de valor mientras que el tipo de referencia de objeto – skjagini
@skjagini - simplemente, el compilador y el tiempo de ejecución pueden detectar fácilmente que algo se deriva de 'ValueType', y tratarlo de manera diferente ... ¿Más allá de eso? ECMA335 –
+1 Aunque los lenguajes como C# pretenden que una estructura enmarcada es un tipo de valor, dentro de las entrañas del CLR cada tipo de valor gestionado tiene un tipo de clase correspondiente que encapsula un campo del tipo de valor correspondiente y envuelve a todos los miembros Ese campo. Incluso si la especificación del lenguaje C# llama a tal cosa un tipo de valor, se comportará como un tipo de referencia. – supercat