La diferencia es que el método queda a nivel de clase, te doy un ejemplo más ilustrativo ...
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);
}
}
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