चूँकि यह Google पर "C # lambda ref" के लिए शीर्ष परिणामों में से एक है; मुझे लगता है कि मुझे उपरोक्त उत्तरों पर विस्तार करने की आवश्यकता है। पुराने (C # 2.0) अनाम प्रतिनिधि सिंटैक्स काम करता है और यह अधिक जटिल हस्ताक्षर (साथ ही बंद) का समर्थन करता है। लैम्ब्डा और अनाम प्रतिनिधियों ने बहुत कम से कम संकलक बैकएंड में कथित कार्यान्वयन साझा किया है (यदि वे समान नहीं हैं) - और सबसे महत्वपूर्ण बात, वे क्लोजर का समर्थन करते हैं।
जब मैंने खोज की, तो सिंटैक्स प्रदर्शित करने के लिए मैं क्या करने की कोशिश कर रहा था:
public static ScanOperation<TToken> CreateScanOperation(
PrattTokenDefinition<TNode, TToken, TParser, TSelf> tokenDefinition)
{
var oldScanOperation = tokenDefinition.ScanOperation; // Closures still work.
return delegate(string text, ref int position, ref PositionInformation currentPosition)
{
var token = oldScanOperation(text, ref position, ref currentPosition);
if (token == null)
return null;
if (tokenDefinition.LeftDenotation != null)
token._led = tokenDefinition.LeftDenotation(token);
if (tokenDefinition.NullDenotation != null)
token._nud = tokenDefinition.NullDenotation(token);
token.Identifier = tokenDefinition.Identifier;
token.LeftBindingPower = tokenDefinition.LeftBindingPower;
token.OnInitialize();
return token;
};
}
बस ध्यान रखें कि लैम्ब्डा प्रक्रियात्मक और गणितीय रूप से सुरक्षित हैं (क्योंकि पहले उल्लेख किए गए रेफरी मूल्य संवर्धन के कारण): आप कीड़े के डिब्बे खोल सकते हैं। इस सिंटैक्स का उपयोग करते समय ध्यान से सोचें।