ExpertiDict

C# · Avançado · Inglês · Técnico

defensive copy

/dɪˈfɛnsɪv ˈkɑpi/substantivo

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ão

Exemplos

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

Veja também

Todos os termos de C#