如何保存对变量的更改?

时间:2015-04-10 11:29:24

标签: c# wpf

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

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

2 个答案:

答案 0 :(得分:0)

我们拥有的数据库......

或配置文件

或文件系统

您需要保留数据,而这些数据必须位于内存中,必须位于磁盘上

了解各种数据持久策略尝试的事情,如果您遇到困难,请告诉我们

答案 1 :(得分:0)

选择要用于保存数据的格式。在应用程序启动时 - 读取文件并将其反序列化到您的模型。关闭 - 序列化并保存到文件。看看下一个问题:Best practice to save application settings in a Windows Forms Application

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

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;
        }
    }
}