परिचय
मल्टीकास्ट डेलीगेट एक डेलीगेट इंस्टेंस है जो एकाधिक मेथड्स को संदर्भित करता है। += से मेथड जोड़ें, -= से हटाएं। आव्हान पर सभी मेथड क्रमिक रूप से चलते हैं।
उदाहरण
using System;
delegate void MyDelegate(int val1, int val2);
public class Demo
{
public static void CalAdd(int val1, int val2)
{
Console.WriteLine("{0} + {1} = {2}", val1, val2, val1 + val2);
}
public static void CalSub(int val1, int val2)
{
Console.WriteLine("{0} - {1} = {2}", val1, val2, val1 - val2);
}
}
public class Program
{
static void Main()
{
MyDelegate d = new MyDelegate(Demo.CalAdd);
d += new MyDelegate(Demo.CalSub); // दूसरा मेथड जोड़ें
d(45, 70); // दोनों चलेंगे: Add फिर Sub
d -= new MyDelegate(Demo.CalAdd); // पहला हटाएं
d(95, 70); // केवल Sub चलेगा
d += new MyDelegate(Demo.CalSub); // Sub फिर से जोड़ें (डुप्लिकेट)
d(88, 6); // Sub दो बार चलेगा
d -= new MyDelegate(Demo.CalAdd); // कोई प्रभाव नहीं (पहले ही हटाया)
d(40, 20); // Sub एक बार चलेगा
Console.Read();
}
}
महत्वपूर्ण व्यवहार
- रिटर्न टाइप
voidहोना चाहिए (अन्यथा केवल अंतिम मेथड का रिटर्न मान मिलता है)। - अपवाद किसी मेथड में फेंका जाए तो शेष मेथड नहीं चलते।
- डेलीगेट इम्यूटेबल हैं;
+=/-=नया डेलीगेट इंस्टेंस बनाते हैं। - इवेंट्स (
eventकीवर्ड) मल्टीकास्ट डेलीगेट का सुरक्षित रैपर हैं।