C# · Avançado · Inglês · Técnico
defensive copy
Cópia que o compilador faz de uma struct para chamar membros quando ela está em campo readonly ou em parâmetro in e o membro não é marcado como readonly.
Onde usar
Aparece ao analisar desempenho com structs grandes: um campo readonly de struct mutável causa cópia a cada chamada de método. Marcar o tipo como readonly struct, ou os membros como readonly, elimina a cópia.
Em código
struct Vetor
{
public double X, Y;
public double Tam() => Math.Sqrt(X*X + Y*Y);
public readonly double Soma() => X + Y;
}
// em campo readonly: Tam() copia, Soma() nãoExemplos
The compiler makes a defensive copy of that readonly field.
O compilador faz uma defensive copy desse campo readonly.
Mark the struct readonly to avoid the defensive copy.
Marque a struct como readonly para evitar a defensive copy.
Cuidado
Não presuma que passar uma struct grande por in é sempre mais barato: se o tipo não for readonly, o compilador pode copiar mesmo assim.
Sinônimos
cópia defensiva