Skip to content

Instantly share code, notes, and snippets.

@mkropat
Last active September 8, 2017 13:26
Show Gist options
  • Save mkropat/fcbe9bec56161be61ee7bf7f727f2d02 to your computer and use it in GitHub Desktop.
Save mkropat/fcbe9bec56161be61ee7bf7f727f2d02 to your computer and use it in GitHub Desktop.
<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