Let's say you have two delegates at hand:
delegate void DummyDelegateWithInt(int x);
delegate void DummyDelegateWithObject(object x);
Everything seems OK right? But how about the performance issues? that question just crossed my mind. int is a value type where object is a reference type. I just implemented a very simple application that makes method calls through these delegates and passes the parameter 0 (int::zero). Of course these method calls are made more than once, 1,000,000,000 times... here is the result:
Method calls made through the first delegate takes 6.3 - 6.4 seconds (1,000,000,000 times), and the second one takes 32 - 33 seconds in average. Of course you may have a much faster CPU than I have, but it will not change the fact will it?