can someone explain a delegate - C#