在 C# 中为本地记分板保存数组
Posted
技术标签:
【中文标题】在 C# 中为本地记分板保存数组【英文标题】:Saving an array in C# for local scoreboard 【发布时间】:2014-03-20 17:28:30 【问题描述】:我正在为具有本地化排行榜的 Windows 8 开发应用程序。该排行榜的数据存储在两个数组中:名称和分数。 (是的,集合可能会更好,但在我的代码中使用数组要容易得多)。我现在想知道如何保存这两个数组并重新加载它们。
到目前为止,我查看的所有有关保存数据的示例都只显示了如何保存设置,而我的 800 页 C# 书恰好完全跳过了保存数据。
我的两个数组目前是这样声明的:
static string[] names = new string[100];
static int[] scores = new int[100];
我在运行 Windows 8.1 Pro 的系统上使用 Visual Studio Express 2012 for Windows 8。
感谢您的帮助。
【问题讨论】:
为什么不把数组转成xml? 看看使用序列化将数据转换为一种很好的格式以保存到文件中。 Xml、Json 或 Binary 都可以工作。 看看msdn.microsoft.com/en-us/library/ms233843.aspx和***.com/questions/4360089/… 你有什么 800 页的书?它必须提到隔离存储 Microsoft Visual C# 2013 //一步一步 【参考方案1】:为了帮助您入门,这里有一些示例代码,用于在 Windows 8 应用中进行序列化和保存。正如其他人所建议的那样,查看 XmlObjectSerialzation 的东西很有用。
string[] names = new string[100];
StorageFolder folder = ApplicationData.Current.RoamingFolder;
XmlWriterSettings set = new XmlWriterSettings();
set.Encoding = Encoding.Unicode;
XmlObjectSerializer serializer = new DataContractSerializer(typeof(string[]));
Stream stream = await folder.OpenStreamForWriteAsync("filename", CreationCollisionOption.ReplaceExisting);
XmlWriter writer = XmlWriter.Create(stream, set);
serializer.WriteObject(writer, names);
【讨论】:
【参考方案2】:查看链接中的以下方法。
您要保存的只是(name|score)
对。它类似于字典。下面的链接解释了它。
http://www.codeproject.com/Articles/42872/Save-Key-Value-Pairs-in-a-File
如果您的应用程序很简单,这应该相当简单。但正如其他人所提到的,如果您想扩展乐谱或开发复杂的应用程序,您应该尝试序列化和 xmls 文件
【讨论】:
以上是关于在 C# 中为本地记分板保存数组的主要内容,如果未能解决你的问题,请参考以下文章
ProtectedLocalStorage.SetAsync() 不保存嵌套属性?