如何在C#中将子类Vehicles的数据添加到MobileObjects类型数组中
如何将Vehicles类的距离数据整合到MobileObjects数组中?
没问题,我来帮你搞定这个事儿!你已经有一个继承自MobileObjects的Vehicles类,还带着10meters、23meters、12meters这些距离数据,现在要把这些信息加到你现有的数组里对吧?
首先得明确几个核心点:
- 因为
Vehicles是MobileObjects的子类,多态特性允许你把Vehicles实例直接放进MobileObjects类型的数组里,这是实现的基础。 - 你需要先给
Vehicles类加一个合适的属性来存储距离值(如果还没加的话),这样每个实例就能对应自己的距离数据。
第一步:完善Vehicles类
先确保你的Vehicles类有存储距离的属性,比如这样:
public class Vehicles : MobileObjects { // 添加一个Distance属性来存储每个车辆的距离值 public double Distance { get; set; } // 如果你原来的10meters等是静态常量,也可以这么定义: // public const double Meters10 = 10; // public const double Meters23 = 23; // public const double Meters12 = 12; }
第二步:修改Main方法的数组初始化逻辑
把原来实例化MobileObjects的地方换成Vehicles,同时给每个实例绑定对应的距离数据:
static void Main(string[] args) { Console.WriteLine("hello"); MobileObjects[] array = new MobileObjects[3]; // 第一个车辆:对应10meters Vehicles mob = new Vehicles(); mob.setName("Jawaharal"); mob.setPosition(); mob.getID(); mob.Distance = 10; // 绑定10米的数据 array[0] = mob; // 第二个车辆:对应23meters Vehicles mob1 = new Vehicles(); mob1.setName("Willow"); mob1.setPosition(); mob1.Distance = 23; // 绑定23米的数据 array[1] = mob1; // 第三个车辆:对应12meters Vehicles mob2 = new Vehicles(); mob2.setName("Indira"); mob2.setPosition(); mob2.Distance = 12; // 绑定12米的数据 array[2] = mob2; foreach (MobileObjects host in array) { Console.WriteLine("Name : " + host.Name + " "); Console.WriteLine("ID : " + host.id); Console.WriteLine("Position: " + host.Position[0] + " " + host.Position[1] + " " + host.Position[2]); // 因为数组是MobileObjects类型,要访问子类Vehicles的Distance属性,需要安全转型 if (host is Vehicles vehicle) { Console.WriteLine("Distance: " + vehicle.Distance + " meters"); } } }
额外说明
- 用
is模式转型是比较安全的做法,能避免直接强制转型可能出现的InvalidCastException。 - 如果你的
Vehicles类里的10meters等是已经定义好的静态字段,直接把赋值语句改成mob.Distance = Vehicles.Meters10就行,不用硬写数字。
内容的提问来源于stack exchange,提问作者Momo
相关产品推荐
相关产品推荐

