अगर मैं तरह मेरे कोड में एक प्रतिनिधि बनाने के लिए: - Invoke
, BeginInvoke
और EndInvoke
प्रतिनिधि कैसे काम करता है?
delegate void dostuff (string o);
यह एक वर्ग है कि System.MulticastDelegate
जो तीन तरीकों को लागू करता है से निकला है उत्पन्न करता है।
अगर मैं Invoke
के लिए संकलित आईएल को देखो सब मैं देख रहा है:
.method public hidebysig newslot virtual
instance void Invoke(string o) runtime managed
{
} // end of method dostuff::Invoke
विधि कोई कोड है। इसे कॉल करना काम करता है - प्रतिनिधि को बुलाया जाता है, लेकिन मैं नहीं देख सकता कि यह कैसे करता है।
करता कहाँ वूडू कि बुला बनाता आह्वान वास्तव में फोन प्रतिनिधि से आते हैं?
यह अंतर्निहित .NET ढांचे का हिस्सा है - कॉल * आह्वान करने का आह्वान है। 'MyDelegate.Invoke()' 'MyDelegate रूप में ही है()' –
MyDelegate() बस वाक्यात्मक चीनी कि MyDelegate.Invoke करने के लिए नीचे संकलित हो जाता है() - उत्पन्न आह्वान विधि के लिए एक कॉल। कॉल के लिए आईएल बस * कॉलवर्ट इंस्टेंस शून्य है ConsoleApplication1.Program/dostuff :: Invoke (string) * जो किसी भी अन्य विधि कॉल से अलग नहीं है। –