Делегаты считаются типобезопасными в программировании благодаря их строгой типизированности. 2
Делегат можно упрощённо представить как указатель на функцию. 2 Но в отличие от обычного указателя, делегат кроме адреса функции хранит ещё и информацию о количестве параметров, их типах и порядке следования, а также о возвращаемом значении. 2
Таким образом, делегату нельзя «подсунуть» какой-то метод, чья сигнатура не соответствует той, что представляет делегат. 2 Например, при попытке использовать делегат, предназначенный для ссылки на метод, принимающий целое число и возвращающий строку, с методом, который принимает строку и возвращает целое число, программа даже не скомпилируется. 1