C#:检查字典是否包含字符串?

时间:2019-11-22 21:19:51

标签: c# class dictionary parsing tags

我正在将一个类“ 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”。

1 个答案:

答案 0 :(得分:0)

您无法像您想象的那样使它起作用,这是因为在Dictionary中存储具体类实际上只是存储其引用。如果您创建一个新的班级,它将有一个新的参考。

我不确定您的设计目标是什么,但是您可以实现IEquatable 接口并覆盖GetHashCode,这是像Dictionary这样的类所使用的比较平等

  

IEquatable接口定义了Equals方法,该方法   确定实现类型的实例的相等性。

     

IEquatable接口由通用集合对象使用,例如   测试时作为Dictionary,List和LinkedList   在包含,IndexOf,LastIndexOf和   去掉。应该为可能存储的任何对象实现它   在通用集合中。

但是,说了所有这些,也许您最好将标记作为字符串存储在字典中?