2013-02-11 11 views
8

Forse non sto usando la parola giusta qui e questo potrebbe essere il motivo per cui non riesco a trovare la risposta da solo. Ho un + & - operatore nella mia classe, ma voglio aggiungere un operatore negativo ... Io fondamentalmente quello di essere in grado di fare questo:Aggiungere un operatore negativo (?) A una classe in C#

myMethod(myClass, -myClass);

Se avete bisogno di esempi di codice a darmi una mano fammi sapere, ma penso che questo dovrebbe essere abbastanza stretto in avanti ... O che non può essere fatto.

+2

Che cosa dovrebbe fare questo operatore negativo? –

+0

Stai pensando all'operatore [negazione logica '!'] (Http://msdn.microsoft.com/en-us/library/f2kd6eb2 (v = vs.110) .aspx)? –

+7

Se si sta sovraccaricando l'operatore meno unario, sarebbe una buona pratica sovraccaricare anche l'operatore unario plus. È l'operatore più inutile del mondo, lo so, ma è anche strano poter dire '-foo' e non' + foo'. –

risposta

23

Certo, l'unario - operatore is overloadable:

public static MyClass operator -(MyClass myClass) 
{ 
    ... 
} 

Fare attenzione a non abusare di queste caratteristiche in quanto i consumatori potrebbero non essere a conoscenza della semantica di questi operatori - A differenza dei metodi (che possono essere ben named-), si spesso non è immediatamente evidente ciò che fa un operatore personalizzato su un tipo. Spero che la tua classe rappresenti un vettore di qualche tipo o simile?

+2

Mi picchia! :) – MrLeap

+1

Fantastico ... Ma ora mi sento stupido. Avrei dovuto capirlo; non ho nemmeno pensato di creare l'operatore con solo 1 parametro. Grazie! –

+0

Beat me pure :( –

4
public static YourClass operator -(YourClass value) 
{ 
} 
Problemi correlati