Gibt es eine Möglichkeit, Operatoren als Funktionen zu verwenden, ohne sie manuell zu deklarieren?
%Vor% Ähnlich wie (+)
/ (-)
in Haskell. In verschiedenen LINQ-Szenarios mit konditionalen Abfragekonstruktionen wäre dies hilfreich. Vielleicht ein C # (4.0+) Trick, von dem ich nichts weiß.
Bearbeiten: Hier ist ein Beispiel, um zu verdeutlichen, was ich meine:
%Vor%Ein gewöhnlicher Anruf wäre:
%Vor%wäre ein cooler Call (unter der Annahme von Haskell Style):
%Vor%Nein.
Sie können die Definitionen (F12 in VS) für die Operatoren finden, die Sie überladen können, und es gibt ein
%Vor% Aber es gibt keine Möglichkeit, Double.operator==(a, b)
aufzurufen.
Das Framework bietet eine a.Equals(b)
für diesen speziellen Fall, aber es gibt keine a.Add(b)
.
Wenn ich verstehe, was Sie richtig machen wollen, können Sie mit System.Reflection
und Delegate.CreateDelegate
einen Delegaten für die Operatormethode erstellen.
Natürlich habe ich es nie getestet, aber Operatormethoden sind Methoden , also sollte es funktionieren. Dies könnte auch automatisiert werden (um Zeit zu sparen im Vergleich zur direkten Methode).
Tags und Links c# functional-programming c#-4.0