c# – 如何创建类的(多态)集合列表数组,其中每个类可能具有一些不同的属性

c# – 如何创建类的(多态)集合列表数组,其中每个类可能具有一些不同的属性,第1张

概述如果我想为游戏创建汽车引擎设计,我将执行以下 *** 作: 基类: public class EngineParts { public string name; public int ID; public GameObject Mesh; public Vector3 Position; public Quaternio 如果我想为游戏创建汽车引擎设计,我将执行以下 *** 作:

基类:

public class EngineParts {        public string name;        public int ID;         public GameObject Mesh;         public Vector3 position;         public Quaternion Rotation;         public string Description;        public float new_value; // the brand new price of it}

然后我会有从它继承的类:

public class Rods : EngineParts    {        }public class Pistons : EngineParts    {        public float Size=51;        public float Compression=51;    }public class Turbo : EngineParts    {        public float maxboostpressure;        public float minboostpressure;        public float MaxOperatingRPM;        public float MinoperatingRPM;        public float AirToEngineRatio;        public float wasteGatePressure;    }

这里的导入是所有汽车零件共享基类中的一些常见值,这些值是名称,ID,网格,位置,旋转等.

它们还具有其他更适合零件本身的值,例如Turbo具有maxboostpressure,它决定了涡轮增压器可以承受的最大增压压力.

现在在实际游戏中,我需要能够将这些部分用作一个集合

public EngineParts[] Part = new EngineParts[3];Part[0] = new Rods();Part[1] = new Pistons();Part[2] = new Turbo();

因此,我可以在需要时遍历所有部件,因为它们都是EngineParts类型.

但是当试图为max maxboostpressure分配一个值时,我无法做到这一点.

//Note: Part[1] here is pistons    Part[1].name = "SportPiston"; // this will work since it is type of EngineParts    Part[1].maxboostpressure = 5.0; // this will not work

这是因为它是EngineParts类型

但我可以说:

Rods rd = new Rods();Pistons pt = new Pistons();Turbo tb = new Turbo();pt.name = 5; // this will workpt.maxboostpressure = 5; // this will work

现在他们确实从Base类共享相同的DAta,但是我不能将Rods,Pistons,Turbo放在一个集合中来循环或传递它们在一个适用于所有这些的函数中.

所以
问题在这里
我怎么能做到最好呢?
1-将发动机的所有部件放在一个集合/列表中
2-能够以最少的编码在每种类型的零件上存储额外的数据.

我一直在读书
抽象类,重载,多态和继承来解决这个问题,但仍然有一些我必须忽略的东西,所以如果有人能指出我正确的方向,我将非常感激.

先感谢您

解决方法 试试像这样的演员:

Piston p = Part[1] as Piston;

如果Part [1]不是Piston,p将为null.

然后继续

if(p!=null)    doSomethingHere;
总结

以上是内存溢出为你收集整理的c# – 如何创建类的(多态)集合/列表/数组,其中每个类可能具有一些不同的属性全部内容,希望文章能够帮你解决c# – 如何创建类的(多态)集合/列表/数组,其中每个类可能具有一些不同的属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存