【问题标题】:How can I make a data structure persist after the application is closed?关闭应用程序后如何使数据结构保持不变?
【发布时间】:2016-06-28 02:37:38
【问题描述】:

好的,让我举一个简单的例子来说明我要描述的内容。这可能是一个非常“n00b”的问题,但我已经准备了很多编程书籍,但他们从来没有这样的例子。

假设我有一个类似的程序

public class Program
{
   private static List<string> _input = new List<string>(); 

   public static void Main()
   {
       string line; 
       while((line = Console.ReadLine()) != null)
       {
            Program._input.Add(line);
       }  
       return 0;            
   }
}

除了想修改它以便下次启动时,我上次运行程序时添加到inputlines 仍然存在。有没有办法做到这一点(无需将列表写入文本文件或类似的东西)?如果有,怎么做?

【问题讨论】:

  • 它必须写在某个地方。您可以将其存储在设置中(在后台将其写入 Windows 配置文件中的文件)。看看How to save a List<string> on Settings.Default?
  • 列表必须存储在某个地方,所以如果文件不是选项,registry/database/cloud?
  • 您可以序列化您的列表。 see example here

标签: c# .net data-structures


【解决方案1】:

一旦您的应用程序关闭,存储在变量中的所有内容都会在您的应用程序被销毁时丢失。

保持数据的唯一方法是将其存储在程序之外的某个位置。最常见的是文件或数据库。在您的情况下,您只是存储文本行,所以我可能会使用文件。

您可以在应用程序关闭时轻松写入文件,然后在应用程序启动时从文件中读取。

【讨论】:

    【解决方案2】:

    如果你想保存你班级的所有价值,你可以使用Serialization

    你可以在这里举一些例子:Examples of XML Serialization

    但在所有情况下,您都需要写入文件,您可以将其保存在 RAM 中。

    【讨论】:

    • 为什么建议对纯文本行进行 XML 序列化?并且存储在 RAM 中往往只会延长持久性问题,可能缺少 NOT。
    【解决方案3】:

    每当您关闭程序时,Windows 都会释放内存。只保留文件。

    写文件不是邪恶的,只是一个简单的陈述。

    File.WriteAllLines("lines.txt", _input);
    

    读取文件也很容易。

    _input.AddRange(File.ReadAllLines("lines.txt"));
    

    【讨论】:

      【解决方案4】:

      当应用程序在操作系统上关闭时,它会从计算机内存中取出...因此您必须将其状态保存到某种文件或存储设备...据我所知,这是唯一的方法

      【讨论】:

        猜你喜欢
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        • 2020-03-06
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        • 2015-03-04
        相关资源
        最近更新 更多