Utilizando C # 7.2 en el modificador para parámetros con tipos primitivos

C # 7.2 introdujo elin modificador para pasar argumentos por referencia con la garantía de que el destinatario no modificará el parámetro.

Estaartícul dice

Nunca debe usar una estructura no de solo lectura como parámetro in porque puede afectar negativamente el rendimiento y podría conducir a un comportamiento oscuro si la estructura es mutable

¿Qué significa esto para las primitivas integradas comoint, double?

Me gustaría usarin para expresar la intención en el código, pero no a costa de pérdidas de rendimiento para copias defensivas.

Preguntas

¿Es seguro pasar tipos primitivos a través dein argumentos y no se han hecho copias defensivas? Son otras estructuras de framework de uso común comoDateTime, TimeSpan, Guid, ... consideradoreadonly por el JIT? Si esto varía según la plataforma, ¿cómo podemos averiguar qué tipos son seguros en una situación dada?

Respuestas a la pregunta(4)

Su respuesta a la pregunta