0

私はF2008に持っています

module mod_Blood
use mod_liquid
implicit none
type, public :: typ_BloodComponents
    character(len=5) :: name
    real(DP):: salt
    real(DP):: RBC
end type typ_BloodComponents

type, public :: typ_BloodWork
    real(DP) :: DrugConc
    real(DP) :: Dilution
    real(DP) :: volume  
    type(typ_BloodComponents) :: vein, artery

    contains
          procedure :: SetParameters => blood_SetParameters
          procedure :: BloodProteinParams  => blood_BloodProteinParams   
end type typ_BloodWork
end mod_Blood

静脈と動脈の両方に、vene%name、vene%salt、vene%RBC、arter%name、arter%salt、arter%RBC という変数があることを知っています。

これを C# に転送するにはどうすればよいですか? モジュールは名前空間ですか? FORTRANの「型」はC#のクラスですか?

私が次のようなことをした場合、それは理にかなっていますか?

class BloodComponents
{
string name;
double salt;
double RBC;
}

class BloodWork
{
    double drugConc
    double dil
    double volume

    class Vein : BloodComponents
    {}
    class Artery : BloodComponents
    {}

    void SetParameters()
    {...}
    void BloodComponentParameter()
    {...}
}

または、FORTRAN を間違って解釈しましたか?

4

1 に答える 1

0

これがあなたが望むものだと思います:

namespace Blood
{
    public struct BloodComponents
    {
        public string name;
        public double salt, RBC;
    }

    public struct BloodWork
    {
        public double drugConc, dilution, volume;
        public BloodComponents vein, artery;

        public void SetParameters()
        {
        }
        public void BloodProteintParams()
        {
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var work=new BloodWork()
            {
                drugConc=0.1,
                dilution=0.2,
                volume=0.3,
                vein=new BloodComponents() { name="A", RBC=0.2, salt=0.6 },
                artery=new BloodComponents() { name="B", RBC=0.5, salt=0.9 }
            };
        }
    }
}

すべてが a であるstructため、値はコピーされるだけです。BloodWorkたとえば、複数の場所で同じインスタントを参照する場合は、タイプを に変更する必要がありますclass

于 2013-05-24T16:49:04.260 に答える