【问题标题】:Storing data in a list without losing them (C#)将数据存储在列表中而不丢失它们(C#)
【发布时间】:2018-08-18 14:39:05
【问题描述】:

伙计们,我正在用 C# 创建一个程序,它将读取用户提供的收入和支出,并将它们存储在 2 个列表中。当请求时,程序必须显示存储在列表中的最小值和最大值。 IncomeOutgo 值可以根据用户的需要添加任意多次,每次添加一个值,程序都会返回菜单,该菜单有 3 个选项:添加新收入、添加新支出和显示最小值/最大值到目前为止。问题是,每次我尝试显示最小/最大值时,程序都会对我说:"System.InvalidOperationException: 'Sequence contains no elements',所以我认为列表中没有存储任何值。有人可以帮忙吗?谢谢!

class Class2
{
    List<double> income = new List<double>();
    List<double> outgo = new List<double>();
    Class1 c1 = new Class1();

   public void FunctionIncome()
    {
        Console.Clear();
        Console.Write("Income: ");
        income.Add(Convert.ToDouble(Console.ReadLine()));
        c1.options();
    }

    public void FunctionOutgo()
    {
        Console.Clear();
        Console.Write("Outgo: ");
        outgo.Add(Convert.ToDouble(Console.ReadLine()));
        c1.options();
    }

    public void functionMinMax()
    {
            double minI = income.Min();
            double maxI = income.Max();
            double minO = outgo.Min();
            double maxO = outgo.Max();

            Console.WriteLine($"Minimum income: {minI}\nMaximum income: {maxI}\nMinimum outgo: {minO}\nMaximum outgo: {maxO}");
            Console.ReadKey();
            c1.options();
    }

【问题讨论】:

  • 你在哪里调用这些函数? FunctionIncomeFunctionOutgo 等..
  • 确保您的程序仅适用于Class2同一个对象实例。确保您的程序不会意外使用两个或更多 Class2 实例。
  • Class1Class2 是非常糟糕的类名称。还有Class1的定义在哪里?想想如何重构你的程序,让每条语句只写一次。
  • 你尝试过静态列表吗?

标签: c# list max min


【解决方案1】:

一个类代表对象的结构,但不应该在长期使用中存储实际数据并像数据库一样使用,在你的情况下,你将创建的类 2 的每个对象都将有一个新的双精度空列表。

你可能认为解决方案是只有一个类的固定实例,一个静态类或单例,这可能会起作用,但如果进程被杀死或你退出应用程序,你仍然会丢失所有数据,并且这绝对不是最佳实践

在这种情况下,您需要在其中存储数据以供长期使用,例如数据库、外部 xml 文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多