如何保存对变量的更改



我想问你们,你们中是否有人知道我如何在progresm中保存更改,以便在重新启动时,更改仍然存在?

例如,我有一个布尔变量,他的defalt值是"false"。我希望在初始启动后,将值更改为"true",这样当我关闭并启动程序时,布尔变量值将为true。

这就是我们拥有数据库的目的。。。

或配置文件

或文件系统

你需要保留数据,这些数据不能在内存中,必须在磁盘上

阅读各种数据持久化策略,尝试一下,如果您被卡住了,请告诉我们

选择要用于持久化数据的格式。在应用程序启动时,读取文件并将其反序列化为您的模型。关闭时,将其序列化并保存到文件中。看看下一个问题:在Windows窗体应用程序中保存应用程序设置的最佳实践

下一个样本取自上述链接:

using System;
using System.IO;
using System.Web.Script.Serialization;
namespace MiscConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            MySettings settings = MySettings.Load();
            Console.WriteLine("Current value of 'myInteger': " + settings.myInteger);
            Console.WriteLine("Incrementing 'myInteger'...");
            settings.myInteger++;
            Console.WriteLine("Saving settings...");
            settings.Save();
            Console.WriteLine("Done.");
            Console.ReadKey();
        }
        class MySettings : AppSettings<MySettings>
        {
            public string myString = "Hello World";
            public int myInteger = 1;
        }
    }
    public class AppSettings<T> where T : new()
    {
        private const string DEFAULT_FILENAME = "settings.jsn";
        public void Save(string fileName = DEFAULT_FILENAME)
        {
            File.WriteAllText(fileName, (new JavaScriptSerializer()).Serialize(this));
        }
        public static void Save(T pSettings, string fileName = DEFAULT_FILENAME)
        {
            File.WriteAllText(fileName, (new JavaScriptSerializer()).Serialize(pSettings));
        }
        public static T Load(string fileName = DEFAULT_FILENAME)
        {
            T t = new T();
            if(File.Exists(fileName))
                t = (new JavaScriptSerializer()).Deserialize<T>(File.ReadAllText(fileName));
            return t;
        }
    }
}

最新更新