¿Cómo son los delegados en C # mejores que los punteros de función en C / C ++?

Los delegados en C # ofrecen una funcionalidad similar a los punteros de función en C. Escuché a alguien decir "los delegados de C # son realmente mejores que los punteros de función en C". ¿Cómo? Por favor explique con un ejemplo.