C# प्रोग्राम के अंतर्गत डेलीगेट को एक फंक्शन या मेथड पॉइंटर की तरह यूज़ किया जाता है। प्रोग्रामर अपनी जरूरत के अनुसार डेलीगेट का निर्माण कर सकता है लेकिन C# प्रोग्रामिंग के अंतर्गत तीन प्रकार के बने बनाए डेलीगेट हैं जिनका उपयोग कर प्रोग्रामर अपने समय की बचत कर सकता है। यह तीन प्रकार के डेलीगेट निम्नलिखित हैं-
१) Func डेलीगेट
२) Action एक्शन डेलीगेट
३) Predicate डेलीगेट
Func डेलीगेट फंक्शन वाले मेथड को पॉइंट करता है।
फंक्शन ऐसे मेथड को कहते हैं जो किसी वैल्यू को रिटर्न करता है इसके विपरीत सबरूटीन या एक्शन ऐसे मेथड को कहते हैं जो कुछ भी रिटर्न नहीं करता है। दूसरे शब्दों में, ऐसा फंक्शन जो कोई वैल्यू रिटर्न नहीं करता है उसे एक्शन की कैटेगरी में रखा जाता है।
Action डेलीगेट सबरूटीन या एक्शन वाले मेथड को पॉइंट करता है।
इसके अलावा एक तीसरे तरह का डेलीगेट होता है जिसे प्रिडिकेट डेलीगेट कहते हैं। Predicate डेलीगेट वस्तुतः Func डेलीगेट का एक खास प्रकार है जिसमें मेथड या फंक्शन की रिटर्न टाइप बुलियन होती है। Predicate डेलीगेट ऐसे फंक्शन वाले मेथड को पॉइंट करता है जो बुलियन वैल्यू true या false रिटर्न करता है।
ऊपर बताए गए डिलीगेट की संकल्पना को अब हम उदाहरण के द्वारा समझेंगे।
सबसे पहले एक फंक्शन वाले मेथड Add को बनाते हैं और फिर उसे Func डेलीगेट के द्वारा कॉल करेंगे।
public double Add(double number1, double number2)
{
return number1 + number2;
}
अब हम एक Action वाले मेथड को बनाते हैं और फिर उसे Action डेलीगेट के द्वारा कॉल करेंगे।
public void Product(double number1, double number2)
{
double product = number1 * number2;
Console.WriteLine("Action Delegate: Product is " + product.ToString());
}
अब हम एक Predicate वाले मेथड को बनाते हैं और फिर उसे Predicate डेलीगेट के द्वारा कॉल करेंगे।
public bool Status(int age)
{
if (age >= 18)
return true;
return false;
}
ऊपर दिए गए मेथड्स को हम अलग अलग तरह के डिलीगेट की सहायता से कॉल करते हैं, इसको नीचे के उदाहरण में स्पष्ट किया गया है -
using System;
namespace BuiltInDelegates
{
class Program
{
public double Add(double number1, double number2)
{
return number1 + number2;
}
public void Product(double number1, double number2)
{
double product = number1 * number2;
Console.WriteLine("Action Delegate: Product is " + product.ToString());
}
public bool Status(int age)
{
if (age >= 18)
return true;
return false;
}
static void Main(string[] args)
{
Program obj = new Program();
Func<double, double, double> AddDelegateObj = obj.Add;
double result = AddDelegateObj.Invoke(22.5, 44.6);
Console.WriteLine("Func Delegate: Sum is "+result.ToString());
Action<double, double> ProductDel = obj.Product;
ProductDel(2, 4);
Predicate<int> PredicateDel = obj.Status;
if (PredicateDel(17))
{
Console.WriteLine("You are eligible to vote.");
}
else
{
Console.WriteLine("You are not eligible to vote.");
}
Console.ReadKey();
}
}
}
Func<double, double, double> इसमें पहले दो डाटा टाइप कॉल किए गए मेथड के इनपुट पैरामीटर्स के डाटा टाइप को इंगित करते हैं जबकि अंतिम पैरामीटर कॉल किए गए मेथड के रिटर्न टाइप को इंगित करता है
Action<double, double> इसमें दोनो डाटा टाइप कॉल किए गए मेथड के इनपुट पैरामीटर्स को इंगित करते हैं क्योंकि एक्शन डेलिगेट ऐसे मेथड को रेफेर करता है जो कुछ भी रिटर्न नहीं करते हैं
Predicate<int> यह बताता है कि कॉल किया गया मेथड में एक ही इनपुट पैरामीटर है और उस मेथड का रिटर्न टाइप बूलियन डाटा टाइप है
केवल फूंक के केस में अंतिम पैरामीटर मेथड के रिटर्न टाइप को इंगित करता है बाकि दोनों केस में पैरामीटर्स केवल कॉल किए गए मेथड के इनपुट पैरामीटर्स को इंगित करते हैं
ऊपर बताए गए तीनों मेथड्स को anonymous methods के रूप में भी परिवर्तित कर सकते हैं और फिर उन्हे Function, Action या Predicate जैसे जेनेरिक डेलीगेट की सहायता से कॉल कर सकते हैं। इसे निम्न उदाहरण के द्वारा प्रस्तुत किया गया है।
using System;
namespace BuiltInDelegates
{ class Program { static void Main(string[] args) { Program obj = new Program(); Func<double, double, double> AddDelegateObj = delegate (double number1, double number2) { return number1 + number2; }; double result = AddDelegateObj.Invoke(22.5, 44.6); Console.WriteLine("Func Delegate: Sum is "+result.ToString()); Action<double, double> ProductDel = delegate (double number1, double number2) { double product = number1 * number2; Console.WriteLine("Action Delegate: Product is " + product.ToString()); }; ProductDel(2, 4); Predicate<int> PredicateDel = delegate (int age) { if (age >= 18) return true; return false; }; if (PredicateDel(17)) { Console.WriteLine("You are eligible to vote."); } else { Console.WriteLine("You are not eligible to vote."); }
Console.ReadKey(); } }}
using System;
namespace BuiltInDelegates{ class Program { static void Main(string[] args) { Program obj = new Program(); Func<double, double, double> AddDelegateObj = (double number1, double number2) => { return number1 + number2; }; double result = AddDelegateObj.Invoke(22.5, 44.6); Console.WriteLine("Func Delegate: Sum is "+result.ToString()); Action<double, double> ProductDel = (double number1, double number2) => { double product = number1 * number2; Console.WriteLine("Action Delegate: Product is " + product.ToString()); }; ProductDel(2, 4); Predicate<int> PredicateDel = (int age) => { if (age >= 18) return true; return false; }; if (PredicateDel(17)) { Console.WriteLine("You are eligible to vote."); } else { Console.WriteLine("You are not eligible to vote."); }
Console.ReadKey(); } }}
२१ अक्टूबर २०२१
© अजीत कुमार, सर्वाधिकार सुरक्षित।
इस आलेख को उद्धृत करते हुए इस लेख के लिंक का भी विवरण दें। इस आलेख को कॉपीराइट सूचना के साथ यथावत साझा करने की अनुमति है। कृपया इसे ऐसे स्थान पर साझा न करें जहाँ इसे देखने के लिए शुल्क देना पडे।
No comments:
Post a Comment