C#为学生预订练习10.2(Douglas Bell出版)

时间:2016-06-02 16:25:59

标签: c#

我正在读这本书,自学C#。但是,我遇到了一个我无法找到解决方法的问题。

这个问题问我: 写一段记住该值的程序,并将它们作为一个类进行比较。该类有一个方法NewValue和属性LowestValue和HighestValue。

我理解这个问题,但是它要求我使用一个我似乎无法理解的轨迹栏如何存储先前在轨迹栏上选择的最小/最大值。

我的班级看起来像这样:

class AmplifierDisplay
{
    private int Low, High;
    public AmplifierDisplay()
    {
        Low = 0;
        High = 0;
    }

    public void NewValue()
    {
      Low = Math.Min(Low, High);
      High = Math.Max(Low, High);
    }

    public int LowestValue
    {
        get
        {
            return Low;
        }
        set
        {
            Low = value;
        }
    }

    public int HighestValue
    {
        get
        {
            return High;
        }
        set
        {
            High = value;
        }
    }
}

2 个答案:

答案 0 :(得分:2)

听起来你需要两件事:

1)用于计算两次测量之间差异的Comparer实现

2)Memento模式实现,提供值的历史记录

在每次移动事件时,将纪念品存储在某种结构中,例如List或Queue。这个" NewValue"无论如何,课程看起来像是纪念品的基础。

请参阅ComparerMemento

答案 1 :(得分:0)

我找到了答案!!! :D

这是类代码:

类AmplifierDisplay

{

private int Low,High;

public AmplifierDisplay()

{

低= 0;

高= 0;

}

    public void NewValue(int newValue)
    {
      Low = Math.Min(Low, newValue);
      High = Math.Max(High, newValue);
    }

    public int LowestValue
    {
        get
        {
            return Low;
        }
        set
        {
            Low = value;
        }
    }

    public int HighestValue
    {
        get
        {
            return High;
        }
        set
        {
            High = value;
        }
    }
}

这是主程序中的代码:

AmplifierDisplay amplify = new AmplifierDisplay();

private int newValue;

    public Chapter10Ex2()
    {
        InitializeComponent();           
        amplify.HighestValue = 0;           
    }

    private void trackBar1_Scroll(object sender, EventArgs e)
    {          
        newValue = trackBar1.Value;                   
    }       

    private void MouseUp(object sender, MouseEventArgs e)
    {          
        amplify.NewValue(newValue);
        lblMinMax.Text = amplify.LowestValue.ToString() + " , " + amplify.HighestValue.ToString();
    }