Sobrecarga de operadores en C#

Iniciado por DanielPy, 29 Julio 2013, 19:52 PM

0 Miembros y 1 Visitante están viendo este tema.

DanielPy

Hola a todos.
Alguien me puede dar una mano con esto, llevo días leyendo sobre el tema y bajando ejemplos y no logro entender esto de la sobrecarga de operadores, por Ej. ¿es muy distinto hacer lo mismo con un bucle foreach para sumar 2 vectores y poner el resultado en otro?.-

Fuente:
http://www.csharpya.com.ar/detalleconcepto.php?codigo=197&inicio=60


Bueno, no se me ocurre nada más, espero alguna aclaración.-
Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

Novlucker

La diferencia es que el método queda a nivel de clase, te doy un ejemplo más ilustrativo ...
Código (csharp) [Seleccionar]
public class Persona
{
    public string Nombre { get; set; }
    public int Sueldo { get; set; }

    public static string operator +(Persona p, Persona p1)
    {
        return string.Format("La suma de los sueldos de {0} y {1} es de {2}", p.Nombre, p1.Nombre, p.Sueldo + p1.Sueldo);
    }
}


Código (csharp) [Seleccionar]
class Program
{
    static void Main(string[] args)
    {
        Persona p1 = new Persona { Nombre = "Carlos", Sueldo = 1000 };
        Persona p2 = new Persona { Nombre = "Ana", Sueldo = 3000 };

        Console.WriteLine("La suma de los sueldos de {0} y {1} es de {2}", p1.Nombre, p2.Nombre, p1.Sueldo + p2.Sueldo);
        Console.WriteLine(p1 + p2);
        Console.ReadLine();
    }
}


En el segundo caso, solo estoy sumando las instancias de clase, y se asume que si sumo dos instancias, entonces me tiene que devolver ese texto. Quita el método de la sobrecarga y verás que ni compila.

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

DanielPy

Hola Novlucker
Me aclaró bastante el panorama tú ejemplo, ahora me surgieron otras dudas, ¿las propiedades no deben declararse fuera del get y set como privadas? y ¿porque get funciona sin un return?.-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein