ExpertiDict

C# · Intermediário · Português · Técnico

sobrecarga de operador

/so.bɾe.ˈkaɾ.ɡa dʒi o.pe.ɾa.ˈdoɾ/substantivo

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

Veja também

Todos os termos de C#