Like Anonymous Methods ,the delegates i am declaring down using \"delegate\" keyword are anonymous delegates?
namespace Test
{
public delegate void MyDelegat
Your delegate is not anonymous. It's called MyDelegate. Delegate in CLR is a class that derives from System.MulticastDelegate and in your case it's called MyDelegate. You cannot directly derive from MulticastDelegate, C# compiler will stop you.
In your code when you assign delegates to del, the type/name of the delegate is inferred by compiler because you declared del as event of type MyDelegate.