Sobrecarga de operadores en C#

La sobrecarga de operadores en C# permite redefinir la acción de un operador en relación a una clase.
En el ejemplo de hoy plantearemos una clase Vector y luego procederemos a redefinir el operador + para dicha clase. Luego cuando sumemos dos objetos de esa clase vector generaremos otro objeto de dicha clase que resulte de la suma de sus componentes.
El empleo de la sobrecarga de operadores debe hacerse con mucho cuidado de no desvirtuar el concepto que representa dicho operador (por ejemplo sobrecargar el operador “-” para la clase Vector y que genere la suma de sus componentes).
Vamos con un ejemplo de uso:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SobrecargaOperadores1
{
class VectorEnteros
{
private int []vec;

public VectorEnteros()
{
vec = new int[5];
}

public void Cargar()
{
for (int f = 0; f < vec.Length; f++)
{
Console.Write("Ingrese componente:");
vec[f] = int.Parse(Console.ReadLine());
}
}

public void Imprimir()
{
for (int f = 0; f < vec.Length; f++)
{
Console.Write(vec[f] + " ");
}
Console.WriteLine();
}

public static VectorEnteros operator +(VectorEnteros v1, VectorEnteros v2)
{
VectorEnteros su = new VectorEnteros();
for (int f = 0; f < su.vec.Length; f++)
{
su.vec[f] = v1.vec[f] + v2.vec[f];
}
return su;
}

}
class Program
{
static void Main(string[] args)
{
VectorEnteros v1 = new VectorEnteros();
Console.WriteLine("Carga del primer vector");
v1.Cargar();
VectorEnteros v2 = new VectorEnteros();
Console.WriteLine("Carga del segundo vector");
v2.Cargar();
Console.WriteLine("Primer Vector");
v1.Imprimir();
Console.WriteLine("Segundo Vector");
v2.Imprimir();
VectorEnteros vt;
vt = v1 + v2;
Console.WriteLine("Vector Resultante");
vt.Imprimir();
Console.ReadKey();
}
}
}

www.asociacionaepi.es