मैंने सोचा कि एक प्रतिनिधि उदाहरण एक समारोह उदाहरण के साथ अंतर-परिवर्तनीय था।प्रतिनिधि उदाहरण और विधि सूचक के बीच क्या अंतर है?
delegate int AddDelegate(int a, int b);
AddDelegate DelegateInstance;
public void DoStuff()
{
//I can call this without a delegate "instance":
MethodThatTakesAdd(Add);
//I can also call it WITH a delegate "instance"
DelegateInstance = Add;
MethodThatTakesAdd(DelegateInstance);
}
public int Add(int a, int b)
{
return a + b;
}
public void MethodThatTakesAdd(AddDelegate addFunction)
{
Console.WriteLine(addFunction(1, 2).ToString());
}
यह बराबर होना दिखाई बुला दोनों तरीकों से आप केवल सी # उपयोग कर रहे हैं, और, आप अंतर कभी नहीं देखेंगे (कम से कम मैं अप करने के लिए नहीं है:
निम्नलिखित कोड ले लो इस बिंदु)। हालांकि, मैं हाल ही में अप्रबंधित कोड था जो इस प्रबंधित कोड में वापस बुला रहा था, उनका अलग-अलग व्यवहार किया जाता है। उदाहरण के लिए, एक परिदृश्य में, मुझे त्रुटि प्राप्त करने के लिए "एक कचरा एकत्रित प्रतिनिधि पर एक कॉलबैक बनाया गया था" अगर मैं सीधे कॉलबैक के रूप में फ़ंक्शन का उपयोग करता हूं (भले ही मेरा ऑब्जेक्ट उदाहरण चारों ओर रखा गया हो)। "प्रतिनिधि उदाहरण" का उपयोग करना समस्या को हल करता है।
क्या वहां कोई है जो जानता है कि अंतर क्या है?
आईएल कैसा दिखता है? क्या "हुड के तहत" कोई संकेत है कि उनका सामान्य रूप से अलग व्यवहार किया जाएगा? –