Covariance
и Contravariance
обеспечивают дополнительную гибкость для объектов делегата. С другой стороны, у события нет таких понятий.
Covariance
позволяет назначить метод делегату, в котором
возвращаемый тип метода - это класс, производный от класса
это указывает тип возврата делегата.
Contravariance
позволяет назначить метод делегату, где
тип параметра метода является базовым классом класса, который
указывается в качестве параметра делегата.