我想知道在 C# 中存储一组字符串列表的最有效方法是什么。
背景
我的目标是存储有关“属性”的信息,例如 Hold(object)
或 Location(x,y,object)
.为此,我有一个将属性名称映射到“值集”的字典。
例如,假设我为具有这些值的“location”属性设置了“location”
location -> ["1","2","robot1"]
["2","3","robot2"]
["2","5","key1"]
我想像这样执行查询
DB["location"].Contains(["1","2","robot1"])
我不知道是否可行,但这是为了让您了解我需要什么。 :)
我做了什么
我必须经常修改和访问这些数据,所以我选择了 HashSet。但我有两个主要选择:
- 第一个是使用类似
HashSet<string[]>
的东西.问题是我认为 HashSet 找不到重复项,因为标准行为是通过引用比较数组。出于同样的原因,我不知道解决“检查集合中是否包含 [a,b,c]”问题的好方法。 - 第二个是使用类似
HashSet<List<string>>
的东西.但是我不需要 List 来存储一组简单的元组。对于这样一份简单的工作,我觉得太过分了。
另一种方法是编写我自己的类来存储“参数”,但如果标准库中存在某些内容,我不想这样做。 :)
谢谢:)
最佳答案
An alternative is to write my own class to store "arguments" but I don't want to do this if something exists in the standard library. :)
这实际上是我的偏好。虽然把它写出来有点工作,但拥有一个实际类型来保存值提供了将相等性直接构建到类型中的能力,并使其用法非常明确。
在您的情况下,您可以存储 2 个整数和一个字符串而不是 3 个字符串等。更重要的是,可以适本地命名 int
和 string
值,这反过来使您的代码更具可读性和可理解性。
关于c# - 在 C# 中存储一组字符串列表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739550/