You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:35:05