代码之家  ›  专栏  ›  技术社区  ›  MehdiB

使用另一个字段的setter更新字段

  •  0
  • MehdiB  · 技术社区  · 6 年前

    我有一节课 Fuel1 :

    class Fuel1
    {
        public double Temperaure                 
        {
            get { return Temperaure; }
            set
            {
                Temperaure = value;
                initialize(Temperaure);
            }
        }
    
        public double Cp { get; private set; }  // J/mol.K
        public double H { get; private set; }  // J/mol
    
        public Fuel1(double Temperaure)
        {
            this.Temperaure = Temperaure;
            initialize(Temperaure);
        }
    
        private double calculate_cp(double te)
        {
            // calculate Cp
        }
    
        private double calculate_h(double te)
        {
            // calculate H
        }
    
        private void initialize(double temperature)
        {
            H = calculate_h(temperature);
            Cp = calculate_cp(temperature);
        }
    }
    

    类的初始化温度如下:

    var fuel = new Fuel1(1000.0);
    

    然后在initialize方法中设置cp和h字段。我想在使用setter更新t的值时自动更新h和cp的值。例如,我将温度设置为1200。

    fuel.Temperature = 1200.0;
    

    我希望cp和h会更新。但是,将initialize方法放入setter会导致无限循环。在不陷入无限循环的情况下,我应该怎么做?

    1 回复  |  直到 6 年前
        1
  •  0
  •   paparazzo    6 年前

    这太疯狂了。这是圆形的

    public double T                 
    {
        get { return T; }
        set
        {
            T = value;
            initialize(T);
        }
    }
    

    你需要一个后场

    private double t;
    public double T                 
    {
        get { return t; }
        set 
        {    
            t = value;
            initialize(t);
        }
    }