C# · Avançado · Português · Técnico
struct mutável
Armadilha clássica: structs com campos ou propriedades alteráveis são copiadas ao serem passadas, lidas de listas ou de campos readonly, e a alteração acontece na cópia, não no original.
Onde usar
Aparece em bugs como lista[0].X = 5 não compilar (CS1612) ou um campo readonly de struct ignorar mudanças. A regra de design é tornar structs imutáveis, preferindo readonly struct e with.
Em código
var l = new List<Ponto> { new() { X = 1 } };
// l[0].X = 5; // erro CS1612
var p = l[0]; // cópia
p.X = 5;
Console.WriteLine(l[0].X); // 1
struct Ponto { public int X; }Exemplos
Esse bug vem de uma struct mutável: você alterou a cópia.
Deixe a struct imutável para evitar a armadilha da cópia.
Cuidado
Não use structs mutáveis como padrão: se precisa de estado que muda, use uma classe.
Antônimos
struct imutável