Ich denke nicht, dass es möglich ist, Operatoren als Parameter für Methoden in C # 3.0 zu verwenden, aber gibt es eine Möglichkeit, diesen oder irgendeinen syntaktischen Zucker nachzuahmen, der es so aussehen lässt, als ob es so läuft?
Ich frage, weil ich kürzlich den Soushombinator in C # implementiert habe aber während der Übersetzung Raganwalds Ruby-Beispiel
%Vor%Was lautet "Nimm die Zahlen von 1 bis 100, behalte die ungeraden, nimm die Summe davon und beantworte dann das Quadrat dieser Zahl."
Ich habe die Symbol # to_proc Sachen knapp. Das ist das & amp ;: in der select(&:odd?)
und der inject(&:+)
oben.
Nun, in einfachen Worten können Sie einfach ein Lambda verwenden:
%Vor%Das ist allerdings nicht sehr aufregend. Es wäre schön, wenn all diese Delegierten für uns vorgefertigt wären. Natürlich könnten Sie dies mit einer statischen Klasse tun:
%Vor%Tatsächlich hat Marc Gravell in MiscUtil , wenn Sie schauen möchten. Sie könnten dann anrufen:
%Vor%Es ist nicht gerade hübsch, aber es ist das nächste, was im Moment unterstützt wird, glaube ich.
Ich fürchte, ich verstehe das Ruby-Zeug wirklich nicht, also kann ich dazu nichts sagen ...
Das Folgende ist direkt, wörtlich (so viel wie möglich) C # -Übersetzung:
%Vor%Speziell:
{||}
- werden Lambdas: =>
select
wird Where
inject
wird Aggregate
into
wird zu einem direkten Aufruf einer Lambda-Instanz Tags und Links ruby c# lambda extension-methods