Last active
September 8, 2017 13:26
-
-
Save mkropat/fcbe9bec56161be61ee7bf7f727f2d02 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Query Kind="Program" /> | |
delegate void SomeDelegate(); | |
static SomeDelegate emptyHandler = delegate {}; | |
event SomeDelegate DefaultSubscriber = () => Console.WriteLine("DefaultSubscriber was called"); | |
event SomeDelegate SubscriberAddedThenRemoved = emptyHandler; | |
event SomeDelegate DefaultSubscriberWithSubscriberAddedthenRemoved = () => Console.WriteLine("DefaultSubscriberWithSubscriberAddedthenRemoved was called"); | |
event SomeDelegate EmptySubscriber = delegate { }; | |
event SomeDelegate NoSubscribers; | |
void Main() | |
{ | |
DefaultSubscriber(); | |
EmptySubscriber(); | |
Console.WriteLine("EmptySubscriber did nothing"); | |
DefaultSubscriberWithSubscriberAddedthenRemoved += emptyHandler; | |
DefaultSubscriberWithSubscriberAddedthenRemoved -= emptyHandler; | |
DefaultSubscriberWithSubscriberAddedthenRemoved(); | |
SubscriberAddedThenRemoved -= emptyHandler; | |
try | |
{ | |
SubscriberAddedThenRemoved(); | |
} | |
catch (NullReferenceException) | |
{ | |
Console.WriteLine("SubscriberAddedThenRemoved throws NullReferenceException"); | |
} | |
try | |
{ | |
NoSubscribers(); | |
} | |
catch (NullReferenceException) | |
{ | |
Console.WriteLine("NoSubscribers() threw NullReferenceException"); | |
} | |
// Output: | |
// DefaultSubscriber was called | |
// EmptySubscriber did nothing | |
// DefaultSubscriberWithSubscriberAddedthenRemoved was called | |
// SubscriberAddedThenRemoved throws NullReferenceException | |
// NoSubscribers() threw NullReferenceException | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment