Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何组织成员字段类以使用C#中的基类?_C#_Class - Fatal编程技术网

如何组织成员字段类以使用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
等,只是为了把气体放在另一个房间里)。我编辑了我的答案,如果是偶然的话,这可能会有所帮助。如果氮是固定的,并且在很多你可能不想做实例的地方使用,你最好使用一个单例或静态类,事实上,我认为枚举最好与一个单例和一个静态类结合起来,以返回关于它的信息<代码>气体氮
例如。