This was the question:
Can I make some C# that compiles and contains these two statements? What type are d and x?
d = null;
d += x;
I wrote the question as a result of my surprise that you could do this with delegate types. In other words, you could add things to a null delegate.
However, it turns out that it works with other things too, including strings. It seems that a += overload (which is how we get the behaviour that allows us to use += to append strings and add handlers to delegates) is also smart enough to make a new object if it turns out that the original is null. Which makes very good sense I suppose.