C#.NET - 存储一些非常小规模的持久性信息的方法?

Joh*_*0te 22 .net c# persistent-storage

我有一个需要极少持久存储的应用程序.实际上,我们谈论的是<30个整数.所有应用程序的需求是在下次启动时知道那些整数(并且整数在运行时会发生变化).

数据库对此来说太过分了,但我并不特别想要使用文本文件.

C#是否有任何机制可以在运行之间保持这样的小值?我注意到你可以将东西存储在资源文件和其他一些地方 - 我不知道你是否可以在运行时更改它们.我刚刚学习C#和.NET来完成一份新工作,所以如果这是一个愚蠢的问题,请道歉!

Zac*_*ary 23

这是另一篇SO帖子的模糊,解释了如何设置应用程序设置,这是一个简单的基于文件的读/写值解决方案.

" 如果使用Visual Studio,则可以很容易地获得可持久设置.在解决方案资源管理器中右键单击项目,选择"属性".如果设置不存在,请选择"设置"选项卡,单击超链接.使用"设置"选项卡创建应用程序设置.Visual Studio创建文件Settings.settings和Settings.Designer.settings,其中包含从ApplicationSettingsBase继承的单例类设置.您可以从代码中访问此类以读取/写入应用程序设置: "

Settings.Default["SomeProperty"] = "Some Value";
Settings.Default.Save(); // Saves settings in application configuration file
Run Code Online (Sandbox Code Playgroud)

  • **应用程序范围**设置在运行时是只读的,**用户范围**设置是可读写的,但是对于他运行的每个进程,它们都将被删除 - 请参阅我的回答:http://stackoverflow.com/questions/10304665 /省电设定到A-EXE/10305024#10305024 (8认同)

Nes*_*zon 6

我会使用embeeded sqlite数据库.

http://www.codeproject.com/Articles/22165/Using-SQLite-in-your-C-Application

SQLite是一个小型,快速且可嵌入的数据库,其中数据库引擎和接口组合到一个库中.它还能够将所有数据存储在单个文件中.因此,如果您的应用程序需要独立的数据库,那么SQLite可能是您的最佳选择.当然,选择SQLite还有其他原因,包括:

SQLite占用的内存很少,访问数据库只需要一个库,因此非常适合嵌入式数据库应用程序.SQLite已经移植到许多平台上,甚至可以在Windows CE和Palm OS上运行.SQLite符合ACID标准,符合所有四个标准 - 原子性,一致性,隔离性和持久性.SQLite实现了ANSI-92 SQL标准的一个大子集,包括视图,子查询和触发器.没有额外的数据库驱动程序的问题,需要ODBC配置.只需在您的应用程序中包含库和数据文件即可.SQLite的有C/C++,PHP,Perl,Python和Tcl的等本地语言的API,C#的Native API仍然是不存在的.


Ste*_*ner 5

您可以将列表序列化为xml文件.这是你如何保存它:

var xs = new System.Xml.Serialization.XmlSerializer(typeof(List<int>));
List<int> ints = new List<int> { 1, 2, 3 };

using (FileStream fs = new FileStream(@"C:\store.xml", FileMode.OpenOrCreate))
{
    xs.Serialize(fs, ints); 
}
Run Code Online (Sandbox Code Playgroud)

检索它同样容易:

using (FileStream fs = new FileStream(@"C:\store.xml", FileMode.OpenOrCreate))
{
    ints = xs.Deserialize(fs) as List<int>;
}
Run Code Online (Sandbox Code Playgroud)