C# 如何保存/加载进度?

C# 如何保存/加载进度?,c#,.net,dictionary,C#,.net,Dictionary,假设我有一个程序,比方说,一本字典,用户可以更新、更改等等。现在,我想把字典保存在一个文件中,这样下次他运行程序时,他可以继续他停止的地方 什么是实现这一目标的正确方法/你将如何实现这一目标 谢谢。一个选项可以是将字典对象本身序列化为文件,采用自定义格式、XML或简单的二进制表示形式,然后在应用程序加载时对其进行反序列化,但这会导致多个用户出现故障 持久化数据的最常见方法之一是在数据库中 如果回答含糊不清,我深表歉意,但解决方案确实取决于应用程序的需要。也许一个简单的文本文件就足够了,或者你确实

假设我有一个程序,比方说,一本字典,用户可以更新、更改等等。现在,我想把字典保存在一个文件中,这样下次他运行程序时,他可以继续他停止的地方

什么是实现这一目标的正确方法/你将如何实现这一目标


谢谢。

一个选项可以是将字典对象本身序列化为文件,采用自定义格式、XML或简单的二进制表示形式,然后在应用程序加载时对其进行反序列化,但这会导致多个用户出现故障

持久化数据的最常见方法之一是在数据库中

如果回答含糊不清,我深表歉意,但解决方案确实取决于应用程序的需要。也许一个简单的文本文件就足够了,或者你确实需要一些更健壮的东西,比如数据库


有几个免费的数据库选项:,,仅举几个例子。

一个选项可以是以自定义格式、XML或简单的二进制表示形式将Dictionary对象本身序列化为文件,然后在应用程序加载时对其进行反序列化,但这会因多个用户而异

持久化数据的最常见方法之一是在数据库中

如果回答含糊不清,我深表歉意,但解决方案确实取决于应用程序的需要。也许一个简单的文本文件就足够了,或者你确实需要一些更健壮的东西,比如数据库


有几个免费的数据库选项:,,仅举几个例子。

因此,字典可能是一个相当大的东西,而将其全部加载到内存中可能不是答案。我可能会使用某种DB来保存它—sqlite或类似的东西。跟踪用户在表项和字典项中使用的最后一个内容将非常简单。特别是对于字典,DB解决方案工作得很好,因为它允许链接到其他条目等。如果字典的大小很大,那么在一些平面文件甚至XML中这样做可能是错误的方法。

因此,字典可能是一个相当大的东西,而将其全部加载到内存中可能不是答案。我可能会使用某种DB来保存它—sqlite或类似的东西。跟踪用户在表项和字典项中使用的最后一个内容将非常简单。特别是对于字典,DB解决方案工作得很好,因为它允许链接到其他条目等。如果字典的大小很大,那么在一些平面文件甚至XML中这样做可能是错误的方法。

我只想序列化字典,因为应用程序正在使用它

假设您有一个
字典
,这里是我将使用的序列化方法:

var entries = 
    dictionary
        .Select(kvp =>
            new XElement(
                "entry",
                new XAttribute("key", kvp.Key),
                new XAttribute("value", kvp.Value)));


var xd = new XDocument(new XElement("dictionary", entries));

xd.Save(@"C:\filename.xml");
然后将其从磁盘恢复:

var dictionary =
    XDocument
        .Load(@"C:\filename.xml")
        .Root
        .Elements("entry")
        .ToDictionary(
            x => x.Attribute("key").Value,
            x => x.Attribute("value").Value);

很简单,是吧?

我只想序列化字典,因为这就是应用程序正在使用的

假设您有一个
字典
,这里是我将使用的序列化方法:

var entries = 
    dictionary
        .Select(kvp =>
            new XElement(
                "entry",
                new XAttribute("key", kvp.Key),
                new XAttribute("value", kvp.Value)));


var xd = new XDocument(new XElement("dictionary", entries));

xd.Save(@"C:\filename.xml");
然后将其从磁盘恢复:

var dictionary =
    XDocument
        .Load(@"C:\filename.xml")
        .Root
        .Elements("entry")
        .ToDictionary(
            x => x.Attribute("key").Value,
            x => x.Attribute("value").Value);

很简单,是吧?

每次更改时都要写一个简单的文本文件怎么样?当你说“dictionary”时,你是指
System.Collections.Generic.dictionary
,还是其他什么?每次更改时都要写一个简单的文本文件怎么样?当你说“dictionary”时,你是指
System.Collections.Generic.dictionary
,或者别的什么?我试过使用XML之类的东西,这很痛苦,但使用数据库是一个很好的解决方案。非常感谢。对于单文件保存/加载,SQLite是上面列出的最合适的。我尝试过使用XML之类的东西,这很痛苦,但使用数据库是一个很好的解决方案。非常感谢。对于单文件保存/加载,SQLite是上面列出的最合适的。