namespacetest{classPublisher//Publishing House { Public Delegate voidPubcomputer (stringMagazinename);//Proxy required to declare an event Public Delegate voidPublife (stringmagazinename); Public EventPubcomputer Onpubcomputer;//The nature of the event's declarative event is a chain of delegates Public EventPublife Onpublife; Public voidIssuecomputer ()//ways to trigger events { if(Onpubcomputer! =NULL) {Console.WriteLine ("issue of Computer publications"); Onpubcomputer ("Programming Guide"); } } Public voidIssuelife () {if(onpublife!=NULL) {Console.WriteLine ("Distribution of Life publications"); Onpublife ("Furniture"); } } } classSubsriber//subscribed by { Private stringname; PublicSubsriber (stringname) { This. Name =name; } Public voidReceive (stringMagazinename)//to define an event handler in an event subscriber{Console.WriteLine (name+"have received"+magazinename); } } classStory {Static voidMain () {Publisher pub=NewPublisher (); Subsriber ZS=NewSubsriber ("Zhang San"); Pub. Onpubcomputer+=NewPublisher.pubcomputer (ZS. Receive);//Subscribe an event to an event publisherSubsriber ls =NewSubsriber ("John Doe"); Pub. Onpubcomputer+=Newpublisher.pubcomputer (LS. Receive); Pub. Onpublife+=Newpublisher.publife (LS. Receive); Pub.issuecomputer ();//Triggering EventsPub.issuelife (); Console.WriteLine (); Console.WriteLine ("a year later"); Pub. Onpubcomputer-=Newpublisher.pubcomputer (LS. Receive); Pub.issuecomputer ();//Triggering EventsPub.issuelife (); } }}
C # event mechanism