डेलीगेट्स मेथड्स को पैरामीटर्स के रूप में पास करने की अनुमति देते हैं। यह फंक्शनल प्रोग्रामिंग और कॉलबैक पैटर्न को सक्षम करता है।
उदाहरण
using System;
public class Demo {
// स्टैटिक मेथड जिसे डेलीगेट द्वारा कॉल किया जाएगा
public static double DivideFunc(double value) {
return value / 5;
}
}
// डेलीगेट डिक्लेरेशन
delegate double MyDelegate(double x);
class Program {
static void Main() {
// डेलीगेट इंस्टेंशिएशन
MyDelegate[] operations = { Demo.DivideFunc };
// डेलीगेट के माध्यम से कॉल
Result(operations[0], 20);
}
static void Result(MyDelegate d, double value) {
double result = d(value); // डेलीगेट इनवोकेशन
Console.WriteLine("परिणाम = {0}", result);
}
}
आउटपुट
परिणाम = 4
आधुनिक सिंटैक्स (Func/Action):
// कस्टम डेलीगेट के बजाय Func का उपयोग
Func divide = x => x / 5;
Console.WriteLine(divide(20)); // 4
// एकाधिक ऑपरेशन्स
var operations = new Func[] {
x => x + 10,
x => x * 2,
x => x / 5
};
foreach(var op in operations) {
Console.WriteLine(op(20));
}
लाभ:
- रणनीति पैटर्न सक्षम करता है
- प्लगइन आर्किटेक्चर
- इवेंट हैंडलिंग
- LINQ का आधार