C# の共変の戻り値の型という機能は、インタフェースを実装するタイミングでは使えないと聞き確認してみました。
確認コードです。
ついでで非 virtual メソッド、abstract メソッドも試しています。
// Return の型 class ReturnTypeBase { } class ReturnType : ReturnTypeBase { } // インタフェース interface IInterFace { ReturnTypeBase InterfaceMethod(); } // 基底クラス abstract class SampleBase { // virtual メソッド public virtual ReturnTypeBase ClassMethod() => null; // 非 virtual メソッド public ReturnTypeBase ClassMethodNotVirtual() => null; // abstract メソッド public abstract ReturnTypeBase AbstractMethod(); } // 実装クラス class Sample : SampleBase, IInterFace { public ReturnType InterfaceMethod() => null; public override ReturnType ClassMethod() => null; public new ReturnType ClassMethodNotVirtual() => new ReturnType(); public override ReturnType AbstractMethod() => null; }
確かにエラーになります。
エラーの内容です。
エラー CS0738 'Sample' は、インターフェイス メンバー 'IInterFace.InterfaceMethod()' を実装していません。 'Sample.InterfaceMethod()' は一致する 'ReturnTypeBase' の戻り値の型を持たないため、 'IInterFace.InterfaceMethod()' を実装できません。
確かにインタフェースの実行時には使えませんでした。覚えておきましょう。