CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

C# - Sobrecarga de operadores

Por Benedito Silva Júnior - publicado em 19/05/2016


Sobrecarga de operadores é um recurso que permite alterar o significado dos operadores de C#, cuja ideia é transformar expressões complexas em expressões mais claras e intuitivas. Por exemplo, a expressão total.somar(val1, val2); poderia ser alterada para uma mais intuitiva, como total = val1 + val2;.

Assim, objetos podem ser usados em uma expressão, da mesma forma que variáveis em uma expressão aritmética.

Sobrecarga de operadores unários

Sobrecarga para operadores que atuam sobre um operando:

public static retorno operator op(parm) { //comandos }

retorno: Tipo do valor a ser retornado pelo método operator. Pode ser de qualquer tipo, mas normalmente é do tipo classe/estrutura que sobrecarrega o operador.

op: Operador a ser sobrecarregado.

parm: Parâmetro do operador op. O sue tipo deve ser classe/estrutura que faz a sobrecarga e não pode usar os modificadores ref e out.

Sobrecarga de operadores binários

Sobrecarga para operadores que atuam sobre dois operandos.

public static retorno operator op(parm1, parm2) { //comandos }

retorno: Tipo do valor a ser retornado pelo método operator. Pode ser de qualquer tipo, mas normalmente é do tipo classe/estrutura que sobrecarrega o operador.

op: Operador a ser sobrecarregado.

parm1, parm2: Parâmetros do operador op que não podem usar modificadores ref e out. Pelo menos um dos parâmetros deve ser do tipo classe/estrutura que faz a sobrecarga.

//Método operator. Sobrecarga do operador binário "*" public static Teste operator *(Teste vetor1, int numero) { Teste VetorRes = new Teste(); for (int i = 0; i < VetorRes.vetor.Length; i++) VetorRes.vetor[i] = vetor1.vetor[i] * numero; return VetorRes; } ... static void Main(string[] args) { Teste obj1 = new Teste(); Teste obj2; obj1.vetor[0] = 10; obj1.vetor[1] = 20; obj1.Exibe(); obj2 = obj1 * 5; // chama o método operator() ... }


 
Voltar a pagina anteriorVoltarSubir ao topo da páginaTopo