在 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() 不保存嵌套属性?

在 C# 中为表单创建保存按钮

C# 变量在赋值后没有改变,改变在 UI 中显示

可以在 TFS 中为 BoardColumn 添加一个下拉框吗?

C#中如何保存cookie到本地

在 C# 中保存二维数组的快速方法