pontoNETpt
A comunidade PontoNetPT está direccionada a todos os programadores que trabalhem com a plataforma .NET.
[ C# ] Sobrecarga de operadores

Olá pessoal,

Hoje descobri algo bastante interessante, é possível fazer sobrecarga de operadores tantos unários quanto binários para classes desenvolvidas por nós.
Segue um exemplo alterado por mim que foi retirado do blog onde encontrei o artigo.


Operadores Unários
+ - ! ~ ++ -- true false
Operadores Binários
* / % & | ^ << >> == != > < >= <= + -

Exemplo:

1. Aqui temos a declaração da classe Coordinate.

class Coordinate
{
#region private fields

int x;
int y;

#endregion

#region properties

public int X
{
get { return x; }
set { x = value; }
}
public int Y
{
get { return y; }
set { y = value; }
}

#endregion

#region constructors

public Coordinate(int x, int y)
{
this.x = x;
this.y = y;
}

#endregion

#region methods

public static Coordinate operator +(Coordinate c)
{
return new Coordinate(c.x+1, c.y+1);
}

public static Coordinate operator -(Coordinate c)
{
return new Coordinate(c.x-1, c.y-1);
}
public static Coordinate operator !(Coordinate c)
{
return new Coordinate(-c.x, -c.y);
}

#endregion

}//end class

2. Vamos a um exemplo de sua usabilidade.

Coordinate c1 = new Coordinate(3, 4);
Coordinate c2 = !c1;

3. Assim, c2 será um clone terá os valores contrários de c1, isto é, -3 e -4.

A saída será -3 e -4.


Fontes:

http://www.dotnetpt.com/default.aspx?id=11&artigo=Overloading%20de%20operadores%20em%20CSharp&url=joaoferreira%5Coverloadingoper.htm
http://aspalliance.com/1227_Understanding_Operator_Overloading_in_C.3


[]'s
Leandro Ribeiro


Posted 23-1-2008 16:29 por Leandro Ribeiro
Filed under:

Comments

Raquel Figueiredo wrote re: [ C# ] Sobrecarga de operadores
on 2-9-2009 19:23

Valeu Cebolinha,...

Estava com dúvida...

bjs

André Guilherme Soares e Silva wrote re: [ C# ] Sobrecarga de operadores
on 23-4-2010 14:00

Muito interessante, não sabia que existia isto.

Valeu!

Add a Comment

(requerido)  
(opcional)
(requerido)  
Remember Me?
If you can't read this number refresh your screen
Enter the numbers above:  
Powered by Community Server (Commercial Edition), by Telligent Systems