C# Anonymous Method

Introduction to C# Anonymous Methods

एक method को किसी दूसरे method में parameter के रूप में pass नहीं किया जा सकता है। यही reason होता है की इसके लिए delegate का प्रयोग किया जाता है। Delegate object एक wrapper object होता है जिसमें आप method को wrap करते है।

Delegate में method को wrap करने के बाद आप उस delegate object को parameter के रूप में किसी दूसरे method या event आदि को आसानी से pass कर सकते है।

लेकिन यह एक बहुत लम्बी process होती है। इसके लिए आपको अलग से एक method create करके उसे delegate object में wrap करना होता है।

  • सबसे पहले आप delegate create करते है और उसका signature return type आदि define करते है।
  • इसके बाद आप same signature के साथ एक method define करते है जिसे delegate में wrap किया जाएगा।
  • इसके बाद delegate का object create किया जाएगा और method को उस delegate object में wrap किया जाएगा।

इस लम्बी process में आपको delegate, method, delegate object आदि के अलग अलग नाम सोचने होते है और उन्हें आपस में link करना होता है। ऐसे में यदि आप कई अलग अलग signature वाले method को प्रयोग कर रहे है तो आपकी समस्या और भी अधिक बढ़ जाती है।

इस समस्या के solution के रूप में C# 2.0 में anonymous methods को introduce किया गया है। Anonymous methods delegates के जैसे ही होते है लेकिन जब आप anonymous methods का प्रयोग करते है तो आपको delegate से कम code लिखना पड़ता है।

Anonymous methods regular methods की तरह नहीं होते है। Anonymous methods का कोई नाम नहीं होता है सिर्फ body होती है। Anonymous methods का कोई data type और return type भी नहीं होता है।

जब आप anonymous methods को use करते है तो आपको separate method create नहीं करना पड़ता है। क्योंकि आप method को directly (inline) delegate के साथ combine करके एक ही जगह पर define कर देते है।

Anonymous methods को typically events के साथ use करने के लिए design किया गया है। Events को handlers assign करने के लिए यह एक simplified way है। इसके अलावा anonymous methods से delegates create करना भी आसान हो जाता है।

Anonymous methods के बारे में कुछ महत्वपूर्ण बातें आगे बताई जा रही है।

  • आप किसी anonymous method को explicitly अपने code में नहीं call कर सकते है।
  • Anonymous methods किसी outer method में declare किये गए variable को access कर सकते है।
  • Anonymous methods को ऐसे methods में pass किया जा सकता है जो parameter के रूप में delegate को accept करते है।
  • यदि आप anonymous methods में ऐसे jump statements define करते है जिनका target anonymous method से बाहर है तो compiler error generate करता है। यदि outer code में ऐसा jump statement define किया जाता है जिसका target anonymous method है तो भी error generate होती है।
  • Anonymous methods में outer code के ref और out parameters को नहीं define किया जाता है।

जब inline code implementation की बात आती है तो lambda expression को प्राथमिकता दी जाती है। लेकिन lambda expressions में आप parameter define करते है। Anonymous methods को आप चाहे तो parameters के बिना भी define कर सकते है।

Lambda expressions के बारे में विस्तृत जानकारी के लिए C# Lambda Expressions in Hindi tutorial पढ़े।

Syntax of C# Anonymous Methods

C# में anonymous methods define करने का general syntax निचे दिया जा रहा है।

delegate(parameters-here){method-body-here}

Anonymous methods को delegate keyword द्वारा define किया जाता है। Parameters define करना optional होता है और ये programmer की need पर depend करता है। Anonymous method की body को curly brackets में define किया जाता है।

हालाँकि Anonymous methods का syntax अलग होता है लेकिन असल में ये normal method की तरह ही behave करते है।

Example of C# Anonymous Methods

C# में anonymous methods का उपयोग निचे उदाहरण द्वारा समझाया जा रहा है।

using System;

public delegate void myDelegate();

class myClass
{
     static void Main(string[] args)
     {
            myDelegate md = delegate(){Console.WriteLine(“This is printed using anonymous method.”);};
            md();
     }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

This is printed using anonymous method.