प्रतिनिधि: मैं समझता हूं। लेकिन जब मैं घटना में जाता हूं, तो कई चीजें मुझे बहुत समझ में नहीं आती हैं। मैंने पुस्तक, एमएसडीएन और नेटवर्क पर कुछ सरल उदाहरण पढ़े, दोनों में समान संरचनाएं हैं। उदाहरण के लिए, यहां लिंक है: Event Exampleमुझे शुद्ध प्रतिनिधि और घटना फ़ील्ड के बीच अंतर नहीं समझा
मैं पहला उदाहरण लेता हूं, लेखक ने कहा कि यह सी # घटना के बारे में सबसे आसान उदाहरण है। public event TickHandler Tick
:
public class Metronome
{
public event TickHandler Tick;
public EventArgs e = null;
public delegate void TickHandler(Metronome m, EventArgs e);
public void Start()
{
while (true)
{
System.Threading.Thread.Sleep(3000);
if (Tick != null)
{
Tick(this, e);
}
}
}
}
public class Listener
{
public void Subscribe(Metronome m)
{
m.Tick += new Metronome.TickHandler(HeardIt);
}
private void HeardIt(Metronome m, EventArgs e)
{
System.Console.WriteLine("HEARD IT");
}
}
class Test
{
static void Main()
{
Metronome m = new Metronome();
Listener l = new Listener();
l.Subscribe(m);
m.Start();
}
}
आप लाइन नोटिस कर सकते हैं:
यहाँ अपने कोड है। जब मैं public TickHandler Tick
में बदलता हूं, तो प्रोग्राम अभी भी वही चलाता है। लेकिन नई लाइन मैं समझता हूं क्योंकि यह सिर्फ एक शुद्ध प्रतिनिधि है।
तो, मेरा प्रश्न है: event
का वास्तविक उद्देश्य पंक्ति में कीवर्ड: public event TickHandler Tick
है। यह बहुत महत्वपूर्ण है, क्योंकि सभी उदाहरण हमेशा इस तरह उपयोग करते हैं, लेकिन मैं समझा नहीं सकता क्यों।
धन्यवाद :)
ध्यान दें कि ये प्रतिबंध केवल उस प्रकार के बाहर हैं जहां 'ईवेंट' घोषित किया गया है। अंदर, आप जो भी चाहें कर सकते हैं, ताकि आप 'टिक (यह, ई)' जैसी चीजें कर सकें। आप इसे 'निजी टिकहैंडलर' के रूप में पारदर्शी रूप से सार्वजनिक जोड़/निकालने के तरीकों के साथ सोच सकते हैं जिन्हें + = और - = के माध्यम से एक्सेस किया जाता है। –
मुझे लगता है कि यह कहने के लिए भ्रामक है कि "ऑपरेशन को प्रतिबंधित करता है" - यह मौलिक रूप से एक अलग तरह का सदस्य घोषित करता है (एक घटना)। मुझे लगता है कि यह मानसिक रूप से घटनाओं और प्रतिनिधियों को काफी महत्वपूर्ण रूप से अलग करने में मदद करता है। –