Why the copyOfDelegate is a copy of the original delegate, instead of the reference copy of the original one?
public class DelegateTester
{
public delegate void PrintDelegate();
public PrintDelegate PrintCallback;
}
public class Client
{
public void Print()
{
Console.WriteLine("in client");
}
}
static void main()
{
DelegateTester tester = new DelegateTester();
Client client = new Client();
tester.PrintCallback += new DelegateTester.PrintDelegate(client.Print);
tester.PrintCallback += new DelegateTester.PrintDelegate(client.Print);
// copy the delegate
DelegateTester.PrintDelegate copyOfDelegate = tester.PrintCallback;
tester.PrintCallback -= new DelegateTester.PrintDelegate(client.Print);
tester.PrintCallback();
copyOfDelegate.Invoke();
}
I believe delegates are immutable, so where you have set:
And then:
You’ve actually assigned the original delegate instance to
copyOfDelegate, and then a new delegate is created when you assign toPrintcallbackbecause of the immutability.