यहाँ मैं प्रतिनिधियों, बहुस्त्र्पीय प्रतिनिधियों और उनके उपयोग की व्याख्या करने जा रहा हूँ .. प्रतिनिधि एक प्रकार है जो किसी वस्तु में विधि (s) संदर्भ रखता है। इसे एक प्रकार का सुरक्षित फ़ंक्शन पॉइंटर भी कहा जाता है। हम कह सकते हैं कि एक प्रतिनिधि एक प्रकार है जो एक विधि हस्ताक्षर को परिभाषित करता है।
जब आप किसी प्रतिनिधि को तत्काल भेजते हैं, तो आप उसके उदाहरण को किसी भी तरीके से संगत हस्ताक्षर के साथ जोड़ सकते हैं। आप प्रतिनिधि उदाहरण के माध्यम से विधि को लागू (या कॉल) कर सकते हैं। डेलिगेट्स का उपयोग अन्य तरीकों के तर्क के रूप में तरीकों को पारित करने के लिए किया जाता है। इवेंट हैंडलर प्रतिनिधियों के माध्यम से लागू किए गए तरीकों से ज्यादा कुछ नहीं हैं। प्रतिनिधियों का उपयोग करने के लाभ हैं, कॉलर से विधि के कॉल को एन्क्रिप्ट करना प्रतिनिधि के प्रभावी उपयोग से आवेदन के प्रदर्शन में सुधार होता है, जो विधि को अतुल्यकालिक रूप से कॉल करने के लिए उपयोग किया जाता है। प्रतिनिधियों के कुछ गुण हैं
Delegates are like C++ function pointers but are type safe.
Delegates allow methods to be passed as parameters.
Delegates can be used to define callback methods.
Delegates can be chained together; for example, multiple methods can be called on a single event.
Methods do not have to match the delegate signature exactly.
जनता का प्रतिनिधि type_of_delegate प्रतिनिधिate_name () // घोषणा
You can use delegates without parameters or with parameter list
If you are referring to the method with some data type then the delegate which you are declaring should be in the same format. This is why it is referred to as type safe function pointer. Here I am giving an example with String.
निम्नलिखित उदाहरण एक प्रतिनिधि ऑपरेशन दिखाता है:
namespace MyDelegate
{
class Program
{
private delegate void Show(string s);
// Create a method for a delegate.
public static void MyDelegateMethod(string me
ssage)
{
System.Console.WriteLine(message);
}
static void Main(string[] args)
{
Show p = MyDelegateMethod;
p("My Delegate");
p.Invoke("My Delegate");
System.Console.ReadLine();
}
}
}
मल्टीकास्ट डेलिगेट क्या है?
यह एक प्रतिनिधि है जो एक से अधिक तरीकों का संदर्भ रखता है। मल्टीकास्ट प्रतिनिधियों में केवल विधियाँ होनी चाहिए जो शून्य लौटाती हैं, अन्यथा एक रन-टाइम अपवाद है।
delegate void MyMulticastDelegate(int i, string s);
Class Class2
{
static void MyFirstDelegateMethod(int i, string s)
{
Console.WriteLine("My First Method");
}
static void MySecondDelegateMethod(int i, string s)
{
Console.WriteLine("My Second Method");
}
static void Main(string[] args)
{
MyMulticastDelegate Method= new MyMulticastDelegate(MyFirstDelegateMethod);
Method+= new MyMulticastDelegate (MySecondDelegateMethod);
Method(1,"Hi"); // Calling 2 Methodscalled
Method-= new MyMulticastDelegate (MyFirstDelegateMethod);
Method(2,"Hi"); //Only 2nd Method calling
}
}
यहां डेलिगेट + = ऑपरेटर का उपयोग करके जोड़ा जाता है और - = ऑपरेटर का उपयोग करके हटाया जाता है।
डेलिगेट प्रकार .NET फ्रेमवर्क में डेलिगेट वर्ग से लिए गए हैं। प्रतिनिधि प्रकार सील कर दिए गए हैं - वे व्युत्पन्न नहीं किए जा सकते हैं। क्योंकि तात्कालिक प्रतिनिधि एक वस्तु है, इसे एक पैरामीटर के रूप में पारित किया जा सकता है, या एक संपत्ति को सौंपा जा सकता है। यह एक प्रतिनिधि को एक पैरामीटर के रूप में स्वीकार करने के लिए एक विधि की अनुमति देता है, और कुछ बाद के समय में प्रतिनिधि को बुलाता है। यह एक अतुल्यकालिक कॉलबैक के रूप में जाना जाता है।