如何组织成员字段类以使用C#中的基类?
我有一个名为如何组织成员字段类以使用C#中的基类?,c#,class,C#,Class,我有一个名为Gas的类,它保存有关特定气体的基本信息: public class Gas { public float molarMass; public float heatCapacity; public float GetPartialPressure() {} public float GetMass() {} public float GetMassPercentage() {} } 我还有一个名为RoomAir的类,它包括一个气体列表和一个
Gas
的类,它保存有关特定气体的基本信息:
public class Gas {
public float molarMass;
public float heatCapacity;
public float GetPartialPressure() {}
public float GetMass() {}
public float GetMassPercentage() {}
}
我还有一个名为RoomAir
的类,它包括一个气体列表和一个字典,它存储特定房间空气中的每种气体及其体积百分比
public class RoomAir {
public float roomVolume;
public float pressure;
public List<Gas> gases;
public Dictionary<Gas, float> gasVolPercentage;
}
对于Gas
类是否有适当的工作流来使用正确RoomAir
对象中的变量?
另外:有没有可能调整一下,以便我可以使用Gas.oxygen
而不是Gas[0]
来访问Gas
成员?为什么不在GetMass方法中添加一个体积作为参数
public float GetMass(float roomVolume) {}
然后通过地球的空气量
earthAir.gases[0].GetMass(earthAir.roomVolume);
为什么不在GetMass方法中添加一个volume作为参数呢
public float GetMass(float roomVolume) {}
然后通过地球的空气量
earthAir.gases[0].GetMass(earthAir.roomVolume);
我认为当您创建一个新的gas时,您应该要求将对RoomAir
的引用传递到构造函数中
您的代码缺少Gas
对象的构造,但请执行以下操作:
Gas nitrogen;
nitrogen = new Gas(roomAir);
nitrogen.molarMass = 0.028f;
在Gas
对象中存储对roomAir
的引用-显然,您必须首先构建roomAir
。因为它是一个参考,所以对房间空气所做的任何其他更改都会反映在气体对象中
给对象提供一个指向其父对象的链接(通常称为parent
)是相当标准的,而它们的父对象通常是一个容器
然后,您的GetMass()
方法可以执行Parent.gages
来获取房间中的其他气体
这个解决方案会奏效,但我真的认为它不是一个好办法。我认为更好的解决方案是将GetMass放在RoomAir
类上,并使Gas
类完全保持沉默
由于氮气的质量与氮气本身无关,因此您必须检查房间才能找到它,因此将GetMass()
放在RoomAir
类中,并使用GetMass(“氮气”)
等参数调用它更为合理,我认为当您创建新气体时,您应该要求将对RoomAir
的引用传递到构造函数中
您的代码缺少Gas
对象的构造,但请执行以下操作:
Gas nitrogen;
nitrogen = new Gas(roomAir);
nitrogen.molarMass = 0.028f;
在Gas
对象中存储对roomAir
的引用-显然,您必须首先构建roomAir
。因为它是一个参考,所以对房间空气所做的任何其他更改都会反映在气体对象中
给对象提供一个指向其父对象的链接(通常称为parent
)是相当标准的,而它们的父对象通常是一个容器
然后,您的GetMass()
方法可以执行Parent.gages
来获取房间中的其他气体
这个解决方案会奏效,但我真的认为它不是一个好办法。我认为更好的解决方案是将GetMass放在RoomAir
类上,并使Gas
类完全保持沉默
由于氮气的质量与氮气本身无关,因此您必须检查房间才能找到它,因此将GetMass()
放在RoomAir
类中,并使用GetMass(“氮气”)等参数调用它更为合理还需要RoomAir中的体积百分比和其他变量,如果我们必须将所有变量传递给每个函数,则不清楚。GetMass()还需要RoomAir中的体积百分比和其他变量,如果我们必须将所有变量传递给每个函数,则不清楚。这是一种方法,但是它不允许我用氮气来创建另一个房间(至少我需要创建气体氮气1
等,只是为了把气体放在另一个房间里)。我编辑了我的答案,如果是偶然的,这可能会有所帮助。如果氮是固定的,并且在很多你可能不想做实例的地方使用,你最好使用一个单例或静态类,事实上,我认为枚举最好与一个单例和一个静态类结合起来,以返回关于它的信息GasEnum.Non
例如,这是一种方法,但它不允许我也用氮气创建另一个房间(至少我需要创建Gas Nonzon1
等,只是为了把气体放在另一个房间里)。我编辑了我的答案,如果是偶然的话,这可能会有所帮助。如果氮是固定的,并且在很多你可能不想做实例的地方使用,你最好使用一个单例或静态类,事实上,我认为枚举最好与一个单例和一个静态类结合起来,以返回关于它的信息<代码>气体氮
例如。