共変性と反変性により、メソッドのシグネチャをデリゲート型に柔軟に一致させることができます。共変性により、メソッドの戻り値の型の派生をデリゲートに定義されている型より強くすることができます。反変性により、メソッドのパラメータ型の派生をデリゲート型より弱くすることができます。
共変性
戻り値の型が、デリゲートの戻り値の型の派生クラスになっていても OK
共変性により、メソッドの戻り値の型の派生をデリゲートに定義されている型より強くすることができます。
反変性
引数の型が、デリゲートの引数の型の基底クラスになっていても OK。
反変性により、メソッドのパラメータ型の派生をデリゲート型より弱くすることができます。
参考にしたところ
(++C++; // 未確認飛行 C++ )
C# 2.0 の新機能
デリゲートの Covariance/Contravariance
http://ufcpp.net/study/csharp/ap_ver2.html#co-contra