Quick note on the accepted answer: I disagree with a small part of Jeffrey\'s answer, namely the point that since Delegate
had to be a referenc
I saw this interesting conversation on the Internet:
Immutable doesn't mean it has to be a value type. And something that is a value type is not required to be immutable. The two often go hand-in-hand, but they are not actually the same thing, and there are in fact counter-examples of each in the .NET Framework (the String class, for example).
And the answer:
The difference being that while immutable reference types are reasonably common and perfectly reasonable, making value types mutable is almost always a bad idea, and can result in some very confusing behaviour!
Taken from here
So, in my opinion the decision was made by language usability aspects, and not by compiler technological difficulties. I love nullable delegates.