• Delegate in C# is similar to a function pointer in C or C++.
• Delegate is type which holds the method(s) reference in an object. It is also referred as a type safe function pointers.
• Delegate allows the programmer to encapsulate a reference to a method inside a delegate object.
• The delegate object can then be passed to code which can call the referenced method, without having to know at compile time which method will be invoked.
• An interesting and useful property of a delegate is that it does not know or care about the class of the object that it references.
for similar kind of questions in c# you can refer this link
c# interview questions