当前位置: 首页 > 编程语言 > C#

在实现中重写接口方法返回类型和派生类共享

时间:2023-04-10 16:30:12 C#

在实现中重写接口方法返回类型和派生类我正在尝试在类中实现(C#)接口方法,返回派生类型而不是在接口基类型中定义:接口IFactory{BaseCarGetCar();}classMyFactory:IFactory{MyCarGetCar(){}}其中,当然是:classMyCar:BaseCar{}然而,出现以下错误:'MyFactory'doesnotimplementinterfacemembers'IFactory.获取汽车()'。“MyFactory.BaseCar()”无法实现IFactory.GetCar(),因为它没有与“BaseCar”匹配的返回类型。谁能指出我失败的原因以及解决它的最佳方法是什么?使用泛型接口IFactorywhereT:BaseCar{TGetCar();}classMyFactory:IFactory{MyCarGetCar(){}}classMyCar:BaseCar{}有两种方法可以实现这一点。您可以使用泛型或显式实现接口成员。泛型接口IFactory其中T:BaseCar{TGetCar();}classMyFactory:IFactory{MyCarGetCar(){}}显式实现成员接口IFactory{BaseCarGetCar();}classMyFactory:IFactory{BaseCarIFactory.GetCar(){returnGetCar();}MyCarGetCar(){}}您的GetCar方法必须返回BaseCar才能实现此接口。正如错误所说,类方法的返回类型必须与接口方法的返回类型相匹配。没有什么可以阻止您创建MyCar的实例然后返回它:BaseCarGetCar(){returnnewMyCar();如果您想获得新类的类型化版本,另一种方法是按照John的回答使用泛型。以上就是C#学习教程:涵盖了接口方法的返回类型和派生类在实现中共有的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表作品如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: