作者:wgol992015 | 来源:互联网 | 2022-11-26 12:38
如果我有一个返回某个集合的方法的接口,是否可以返回集合类型的实现?
例如:
public interface IVehicle
{
IEnumerable GetParts(int id);
}
public class Car : IVehicle
{
List GetParts(int id)
{
//return list of car parts
}
}
public class Train : IVehicle
{
IEnumerable GetParts(int id)
{
//return IEnumerable of train parts
}
}
如果没有,为什么不呢?
至少对我而言,这是有道理的.
1> Damien_The_U..:
您当然可以自由地返回任何实现IEnumerable
作为方法的实现细节GetParts
(例如,Train
可以List
轻松返回).但是方法签名必须在接口定义和该方法的类实现之间精确匹配.
这里(与例如重载不同)方法签名包括方法的返回类型.所以不,你不能写Car
如图所示或类似的东西.你当然可以自由地拥有GetParts
这个方法不返回List
,但不会满足接口要求-你可以选择为替代提供一个明确的实现:
public class Car : IVehicle
{
List GetParts(int id)
{
//return list of car parts
}
IEnumerable IVehicle.GetParts(int id) => this.GetParts(id);
}