如何将非通用排序列表保存到文件中,以便可以从文件中加载该排序列表?

Posted

技术标签:

【中文标题】如何将非通用排序列表保存到文件中,以便可以从文件中加载该排序列表?【英文标题】:How do you save a non-generic sorted list to a file so that you can load that sorted list from the file? 【发布时间】:2021-03-07 14:09:33 【问题描述】:

我是初学者,我希望能够以编程方式从文件中存储和加载选项,以便玩家可以随时随地自定义选项。

我尝试了以下方法:我尝试编写排序列表本身并尝试将其转换为字符串,但这些都不起作用。我用谷歌搜索机搜索过,我也在 Stack Overflow 上搜索过,但没有任何用处。

我们将不胜感激。

【问题讨论】:

快速 search 在前 3 名中显示了指向 Saving from List<T> to txt 的链接 这是一个通用列表,也只是一个列表,而不是一个 SortedList,因为它没有键和值。我要求一个非通用的 SortedList 以便我可以存储许多不同的值类型,这样我就可以轻松地使用某种设置菜单来更改我的项目中的某些内容 How to Sort a List<T> by a property in the object 另见Why are there two kinds of SortedList? SortedList 本身完全是另一种变量类型,您可以执行以下操作:SortedList sl = new SortedList();。还有一个通用变体,您也可以在其中使用 。我知道为什么也存在泛型和非泛型。 List 有一个写所有的功能。就在列表对象 type.w 之后,您会看到。 【参考方案1】:

怎么样?

using System.IO;

public static string FromListToString(SortedList list)
    string text = "";
    for (int i = 0; i < list.Count; i++)
        text += list.getKey(i) + "\t" list.getValue(i) + "\n";
    
    return text;


public static SortedList FromStringToList(string str)
    string[] strArr = str.Split('\n');
    SortedList list = new SortedList();
    foreach (string i in strArr)
        string[] splittedStr = i.Split('\t');
        list.Add(splittedStr[0], splittedStr[1]);
    
    return list;


public static void ToFile(string path, SortedList list)
    (new StreamWriter(path)).WriteLine(FromListToString(list));


public static SortedList FromFile(string path)
    return FromStringToList((new StreamReader(path)).Read());

【讨论】:

在我的帖子中,我指的是 SortedList,就像在列表中一样,但具有值和键类型,也可以是非泛型的 这可能适用于具有字符串值类型的 SortedList,但我的问题是我也想使用字符串和数字(​​双精度)。不过我找到了一个解决方案,就是这样格式化:类型、键、值;因为我的钥匙总是一个字符串。然后在加载时,您可以使用子字符串和 if 条件来检查值类型以正确加载值。

以上是关于如何将非通用排序列表保存到文件中,以便可以从文件中加载该排序列表?的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 如何将非隔行扫描 32 位浮点格式保存到文件

如何将字典列表保存到文件中?

从通用视频编码中提取运动矢量

将自定义图像(非 JPEG)保存到 iPhone 照片目录

将类对象列表保存到 JSON 文件中,以便以后读取

我将如何修复我的代码以便以这种格式创建一个单词文件(见正文)?