我创建了一个文本管理器类来处理不同上下文的文本(例如:一般上下文,菜单上下文,游戏上下文等等)。
每个上下文都是使用二进制文本文件创建的,数据存储在字典中的字典中,如下所示:
private Dictionary<string, Dictionary<string, string>> m_TextContexs;
其中的工作原理如下:
m_TextContexs[context][textID][actual text]
我希望用户只能使用&#39; textID
&#39;找到任意一行文字。这样的函数中的字符串:
public string GetText(string id)
已编辑:textIDs是唯一的,因为在多个上下文中不会存在相同的textID。
所以这个函数应该在所有现有的上下文中找到字符串id并返回有效的实际文本。
这里的问题是,执行此操作的最快方法是什么。我不是一个经验丰富的程序员,所以我要做的就是遍历所有的上下文,如果提到文本ID存在的话,请查看每个上下文。
如果您想知道为什么我需要&#39;背景&#39;是对文本进行分组,因此如果不再需要上下文,我可以从内存中卸载该数据。
非常感谢提前:)
答案 0 :(得分:4)
字典在O(1)时间内从键中检索值,这意味着实际上是即时的,所以这个问题实际上取决于您的context
是什么类型的动物,以及textId
的唯一性。
你怎么知道哪个上下文是“正确的”?你能从用户的当前位置和应用程序中的路径确定这个吗?如果是这样,那么您可以将那个值传递给查找函数。
否则,循环遍历上下文对你没有好处,除非textId
在上下文中是唯一的。例如,给定textId 123
,您如何知道自己是想要m_TextContexs[context1][123]
还是m_TextContexs[context2][123]
?
如果textId
在上下文中是唯一的(最佳情况),那么您可以从图片中删除context
,并使用Dictionary<string, string>
和{ {1}}是唯一的关键。