Usando C # 7.2 no modificador para parâmetros com tipos primitivos

O C # 7.2 introduziu oin modificador para passar argumentos por referência com a garantia de que o destinatário não modificará o parâmetro.

esteartigo diz:

Você nunca deve usar uma estrutura não somente leitura como os parâmetros in, pois isso pode afetar negativamente o desempenho e pode levar a um comportamento obscuro se a estrutura for mutável

O que isso significa para primitivas internas, comoint, double?

Eu gostaria de usarin expressar intenção no código, mas não à custa de perdas de desempenho em cópias defensivas.

Questões

É seguro passar tipos primitivos viain argumentos e não ter cópias defensivas feitas?Outras estruturas de estrutura comumente usadas, comoDateTime, TimeSpan, Guid, ... consideradoreadonly pelo JIT?Se isso varia de acordo com a plataforma, como podemos descobrir quais tipos são seguros em uma determinada situação?

questionAnswers(4)

yourAnswerToTheQuestion