【问题标题】:C#: Checking if a Dictionary contains a string? [duplicate]C#:检查字典是否包含字符串? [复制]
【发布时间】:2019-11-22 21:19:51
【问题描述】:

我将一个类“标签”和一个字符串“标签名称”存储到一个字典列表中。 这是我存储在该列表中的示例:

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”。

【问题讨论】:

  • (line == "a" + "p" + "p" + "l" + "y") || (line == "apply") 这两个条件是相同的。您实际上希望他们做什么?
  • 而且还不太清楚您要在这里做什么。你的字典KeyTag 类型的吗?这听起来不像是好的设计。
  • 你的问题有点不清楚。您是要在字典中搜索标签的一部分还是完整的标签?前者不是人们通常对字典所做的,后者是可能的,如果你在你的 Tag 类上实现GetHashCode 方法。
  • 我这样做只是因为我担心它会存储单独的字符,或者是否会将整个内容作为字符串。不过现在完全没必要了。 (之前收到过关于它的错误,所以它只是在检查)是的,我的字典键是标签类型。我认为这是一个好主意,因此我可以拥有一个标签字典,其中每个标签在创建时都有其自身的特定属性。我只是想在字典中搜索字符串,因为我将类存储为字典键,所以我不知道如何在字典中搜索类键中的字符串。
  • 目前还不清楚你到底在找什么,但问题aswritten似乎是常规的“如何通过部分键或值匹配在字典中查找项目” (类似于stackoverflow.com/questions/15445432/…)。如果这不是您想要的,请edit 澄清问题。

标签: c# class dictionary parsing tags


【解决方案1】:

你不能让它像你想象的那样工作,那是因为在Dictionary 中存储一个具体类实际上只是存储它的引用。如果您创建一个新课程,它将有一个新的参考。

我不确定您的设计目标,但您可以实现 IEquatable 接口 并覆盖 GetHashCode ,这是 Dictionary 之类的类用于比较相等性的方法

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

IEquatable 接口被通用集合对象使用,例如 测试时作为 Dictionary、List 和 LinkedList 在 Contains、IndexOf、LastIndexOf 和 消除。应该为可能存储的任何对象实现它 在一个通用集合中。

但是,说了这么多,也许您最好将标签作为字符串存储在字典中?

【讨论】:

    猜你喜欢
    • 2013-03-04
    • 2016-01-25
    • 2016-11-06
    • 2015-11-12
    • 2017-02-27
    • 2015-03-25
    • 2021-12-20
    • 2015-02-07
    • 2011-03-29
    相关资源
    最近更新 更多