gpt4 book ai didi

c# - 如何创建接口(interface)类型数组

转载 作者:行者123 更新时间:2023-11-30 13:44:15 25 4
gpt4 key购买 nike

我有一个接口(interface) Vehicle 由两个类 CarTruck 实现。我如何创建一个包含所有不同类的混合的接口(interface)类型数组,并且仍然能够访问它们的成员,并更改它们

public interface Vehicle
{
double purchase_price();
string vehicle_type();
int release_year();
int purchase_year();
bool IsOld(int releaseYear, int purchaseYear);
void Details();

}

在我的主要方法中我有这个

  var vehls = new Vehicle[]
{
new Truck(8, 1000, "Ford", "F15000", 2011, 2016, false),
new Truck(4, 13000, "Ford", "F-150", 2009, 2014, false),
new Car("Ford", "Super Duty", 2012, 2017, false),
};

当我尝试访问汽车成员以分配他们时,它不允许我。它给我错误。

   Car c1 = vehls[2];   
c1.Wheel = 4;
c1.Miles = 12000;

除非我施放它们:

   Car c1 = (Car) vehls[2];
c1.Wheel = 4;
c1.Miles = 12000;

我如何才能创建这样一个数组,以便我仍然能够访问每个类成员和字段,而无需在构造函数中填充所有内容。我不想一直转换它。有没有一种方法可以让分配自动检测类(class)类型并允许我访问和分配成员?

最佳答案

不,没有。

这就是使用接口(interface)(或基类)的重点,您只能通过接口(interface)访问派生类。如果您需要访问 WheelMiles,那么这些成员应该是接口(interface)的一部分(作为属性)。

像你这样的沮丧是一种主要的代码味道,虽然你不能总是避免它,但它是你做错事的好兆头。

关于c# - 如何创建接口(interface)类型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42724297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com