No, the keyword
delegate
and
System.Delegate
are not the same, not at all.
You could be confused with the C#
alias keywords. For example "int" is an alias for
System.Int32
. For delegates, this is not the case.
Read the documentation on these type and look through all the cases of using the keyword. It's not as trivial as you may think. In particular, don't miss the use of this keyword in anonymous delegates. Please start here:
http://msdn.microsoft.com/en-us/library/ms173171%28v=vs.110%29.aspx[
^].
Please see my past answers on the topic:
Pass a method with N params as parameter in C#[
^],
What is the Extra Advantage of Delegate[
^],
Confusion about delegates[
^].
In particular, you should pay special attention for one complicated thing: declare a delegate type with the
delegate
keyword. Create a delegate instance. Check up the
runtime type of the delegate instance using
GetType
method. You will find that this is the class which has nothing to do with the delegate type!
For some explanations, please see my article:
Dynamic Method Dispatcher[
^].
—SA