En C #, uso de tipos de valor frente a tipos de referencia

Mis preguntas son:

¿Cuándo debemos usar los tipos de valor y cuándo los tipos de referencia?¿Cuáles son las ventajas y desventajas de uno sobre otro?¿Qué pasa si uno usa tipos de referencia en todas partes? ¿Hay algún daño en esto?

Por favor también discuta las ventajas y desventajas de cada uno. Quiero entender eso también.

Respuestas a la pregunta(5)

Su respuesta a la pregunta