我正在将一个类“ Tag”和一个字符串“ tag name”存储到字典列表中。 这是我存储在该列表中的一个示例:
Tag apply_t = new Tag("<apply>");
tagteam.Add(apply_t, "apply");
我可以检查该行是否得到想要的字符...
我将下面的内容传递给我的if语句位于其中的函数
char[][] arr = File.ReadAllLines(path).Select(l => l.ToCharArray()).ToArray();
string line1tag = "" + arr[0][1] + arr[0][2] + arr[0][3] + arr[0][4];
ReturnTag(line1tag);
继续...
if ((line == "a" + "p" + "p" + "l" + "y") || (line == "apply"))
{
Debug.Log(line);
}
else
{
Debug.Log("trying my best");
}
但是 我真的需要它比这更有活力... 我希望能够说类似的话
if (line == tagteam.ContainsKey())
{
}
由于我在字典中存储了一个类和一个字符串名称,该如何检查?
我当时在想像临时标签,但我不知道该如何做。
有什么想法吗?
TL; DR: 目的是能够读取该行所附的字符串,然后将其与字典进行比较并找到匹配项。我的问题是我现在有一个带有字符串名称的类。它给我错误“无法从字符串转换为parseML.Tag”。
答案 0 :(得分:0)
您无法像您想象的那样使它起作用,这是因为在Dictionary
中存储具体类实际上只是存储其引用。如果您创建一个新的班级,它将有一个新的参考。
我不确定您的设计目标是什么,但是您可以实现IEquatable 接口并覆盖GetHashCode
,这是像Dictionary
这样的类所使用的比较平等
IEquatable接口定义了Equals方法,该方法 确定实现类型的实例的相等性。
IEquatable接口由通用集合对象使用,例如 测试时作为Dictionary,List和LinkedList 在包含,IndexOf,LastIndexOf和 去掉。应该为可能存储的任何对象实现它 在通用集合中。
但是,说了所有这些,也许您最好将标记作为字符串存储在字典中?