将数据存储在列表中而不丢失它们(C#)
Posted
技术标签:
【中文标题】将数据存储在列表中而不丢失它们(C#)【英文标题】:Storing data in a list without losing them (C#) 【发布时间】:2018-08-18 14:39:05 【问题描述】:伙计们,我正在用 C# 创建一个程序,它将读取用户提供的收入和支出,并将它们存储在 2 个列表中。当请求时,程序必须显示存储在列表中的最小值和最大值。 Income
和 Outgo
值可以根据用户的需要添加任意多次,每次添加一个值,程序都会返回菜单,该菜单有 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();
【问题讨论】:
你在哪里调用这些函数?FunctionIncome
、FunctionOutgo
等..
确保您的程序仅适用于Class2
的同一个对象实例。确保您的程序不会意外使用两个或更多 Class2 实例。
Class1
和 Class2
是非常糟糕的类名称。还有Class1
的定义在哪里?想想如何重构你的程序,让每条语句只写一次。
你尝试过静态列表吗?
【参考方案1】:
一个类代表对象的结构,但不应该在长期使用中存储实际数据并像数据库一样使用,在你的情况下,你将创建的类 2 的每个对象都将有一个新的双精度空列表。
你可能认为解决方案是只有一个类的固定实例,一个静态类或单例,这可能会起作用,但如果进程被杀死或你退出应用程序,你仍然会丢失所有数据,并且这绝对不是最佳实践
在这种情况下,您需要在其中存储数据以供长期使用,例如数据库、外部 xml 文件
【讨论】:
以上是关于将数据存储在列表中而不丢失它们(C#)的主要内容,如果未能解决你的问题,请参考以下文章
通过AsyncTask下载图像并将其显示在Imageview中而不存储在SD卡中