操作历史C#

operation history C#

你好,我有一个问题,我刚刚开始我的 C# 冒险,我有一个问题,我想做计算器操作的历史,我的代码有效,但我想做最后 10 次操作的历史,但它只显示最后一次操作

public class CalculationHistory
    {
        public CalculationHistory()
        {
            Items = new List<CalculationHistoryItem>();
        }

        public List<CalculationHistoryItem> Items { get; set; }

        public void Add(double x, double y, string z)
        {
            Items.Add(new CalculationHistoryItem(x, y, z));
        }

    }

    public class CalculationHistoryItem
    {
        public double x { get; set; }
        public double y { get; set; }
        public string z { get; set; }

        public CalculationHistoryItem(double first, double sec, string res)
        {
            x = first;
            y = sec;
            z = res;
        }
    }

这里是应该显示“p”键后最后 10 次操作的其余代码,但它只显示了我需要更改才能开始正常工作的最后一件事

case "P":
                        Console.WriteLine("Lista ostatnich operacji : ");
                        CalculationHistory history = new CalculationHistory();
                        history.Add(x, y, z);
                        foreach (var item in history.Items)
                            Console.WriteLine(item);
                        break;

问题的原因在于,对于每个新的计算操作,您都会创建一个新的“CalculationHistory”对象。因此每个 CalculationHistory 对象都有自己的历史记录。

解决方法:在循环外定义一个对象

CalculationHistory history = new CalculationHistory();

为每个动作添加到同一个对象。

Console.WriteLine("Lista ostatnich operacji : ");
history.Add(x, y, z);
foreach (var item in history.Items)
    Console.WriteLine(item);
break;