If delegate A point to method B and method C through multiple casting, why can't we have delegate A pointing to method B and method B calling method C?
Sure, you can do that. But the entire point of delegates is that the delegate consumer doesn't need to know what the implementation is. And in delegates with multiple targets, the key point is that they don't need to know about each-other. Since events are implemented by delegates, it is common for an event to have multiple subscribers, which is perhaps the main usage of delegates with multiple targets.
However, in .NET all delegates support multiple targets, so it is rather moot.
As an aside; in your A/B/C scenario, you could also do:
SomeDelegateType instance = delegate {
B();
C();
};
which is a single delegate that calls B
and C
. Or you can do:
SomeDelegateType instance = new SomeDelegateType(B) + new SomeDelegateType(C);
or whatever you want, really. It doesn't matter hugely.