Credo non sia possibile fare un overload di un operatore per un tipo predefinito di .NET (Double). L'errore che ti compare è dovuto al fatto che il compilatore si aspetta di trovare almeno un parametro del tipo della classe che lo contiene. Immaginiamo che ti trovi dentro la classe Vettore; l'overload dell'operatore + si potrebbe scrivere così:
codice:
public class Vettore
{
public Vettore()
{
//
// TODO: aggiungere qui la logica del costruttore
//
}
public static Vettore operator -(Vettore vx, Vettore vy)
{
// bla bla bla
}
}
Siccome però non conosco bene c#, ti posto un pezzo di codice VB.NET 2005 (che supporta l'overload degli operatori) sperando ti possa essere utile:
codice:
Public Class Vector
Private _v As Double()
Public Sub New()
_v = Nothing
End Sub
Public Property Items() As Double()
Get
Return _v
End Get
Set(ByVal value As Double())
_v = value
End Set
End Property
Public Shared Operator +(ByVal v1 As Vector, ByVal v2 As Vector) As Vector
Dim vv As New Vector
'implementazione della somma
vv._v(0) = v1._v(0) + v2._v(0)
Return vv
End Operator
End Class
Non badare a come ho implementato la somma, l'ho scritta a caso.
Ciao