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?