C# · Intermediário · Português · Técnico
sobrecarga de operador
Recurso que permite definir como operadores como +, == e < funcionam em um tipo próprio, por métodos estáticos operator declarados na classe ou struct.
Onde usar
Usada em tipos matemáticos como vetores e dinheiro. Ao sobrecarregar == é preciso sobrescrever Equals e GetHashCode, e o compilador exige que pares como == e != sejam definidos juntos.
Em código
var v = new Vec(1, 2) + new Vec(3, 4);
Console.WriteLine(v); // Vec { X = 4, Y = 6 }
record Vec(int X, int Y) {
public static Vec operator +(Vec a, Vec b)
=> new(a.X + b.X, a.Y + b.Y);
}Exemplos
Fiz a sobrecarga do operador + para somar dois vetores.
Se você sobrecarrega o ==, lembre de definir o != também.
Cuidado
Não dê a um operador um sentido surpreendente: + deve se comportar como soma ou concatenação, e não como outra operação.
Sinônimos
operator overloading