Sobrecarga De Metedos
Enviado por baijen • 19 de Marzo de 2013 • 625 Palabras (3 Páginas) • 359 Visitas
Al igual que C++, C# permite sobrecargar operadores para utilizarlos en clases propias. Esto hace posible que utilizar un tipo de datos definido por el usuario parezca tan natural y lógico como utilizar un tipo de datos fundamental. Por ejemplo, podría crear un nuevo tipo de datos denominado ComplexNumber para representar un número complejo y proporcionar métodos que realicen operaciones matemáticas en esos números mediante operadores aritméticos estándar, como utilizar el operador + para sumar dos números complejos.
Para sobrecargar un operador, se escribe una función que tenga el nombre del operador seguido del símbolo del operador que se va a sobrecargar. Por ejemplo, a continuación se muestra cómo sobrecargar el operador +:
C#Copiar
public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)
Todas las sobrecargas de operador son métodos estáticos de la clase. También tenga en cuenta que si sobrecarga el operador de igualdad (==), también debe sobrecargar el operador de desigualdad (!=). Los operadores < y >, y los operadores < = y > = también se deberían sobrecargar en pares.
La lista completa de operadores que se pueden sobrecargar es la siguiente:
•Operadores unarios: +, -, !, ~, ++, --, true, false
•Operadores binarios: +, -, *, /, %, &, |, ^, <<, >>, ==, !=, >, <, >=, <=
El ejemplo de código siguiente crea una clase ComplexNumber que sobrecarga los operadores + y -:
C#Copiar
public class ComplexNumber
{
private int real;
private int imaginary;
public ComplexNumber() : this(0, 0) // constructor
{
}
public ComplexNumber(int r, int i) // constructor
{
real = r;
imaginary = i;
}
// Override ToString() to display a complex number in the traditional format:
public override string ToString()
{
return(System.String.Format("{0} + {1}i", real, imaginary));
}
// Overloading '+' operator:
public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(a.real + b.real, a.imaginary + b.imaginary);
}
// Overloading '-' operator:
public static ComplexNumber operator-(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(a.real - b.real, a.imaginary - b.imaginary);
}
}
Esta clase permite crear y manipular dos números complejos con código de la manera siguiente:
C#Copiar
class TestComplexNumber
...