【问题标题】:C# Looking for a key in a hash table and gather the corresponding valueC# 在哈希表中查找键并收集相应的值
【发布时间】:2014-10-13 19:47:33
【问题描述】:

谁能告诉我如何在哈希表中搜索特定键并推迟变量中的相应值(例如,键和值都来自类 point

我添加如下值:

Hashtable Hash = new Hashtable();     
Hash.Add(new Point(Po.X - 1, Po.Y), new Point(Po.X, Po.Y));

【问题讨论】:

    标签: c# hashtable point


    【解决方案1】:

    您可以使用以下内容:

    Point value;
    if (Hash.ContainsKey(YourKey))
    {
        value = (Point)Hash[YourKey];
    }
    

    【讨论】:

      【解决方案2】:

      您应该查看通用Dictionary<T,T>,而不是HashTable(如果您使用的是 .Net 框架 2.0 或更高版本)

      但如果你想从当前非通用HashTable 获取密钥,你可以这样做:

      var KeyToSearch = new Point(10 - 1, 20);
      if (Hash.ContainsKey(KeyToSearch))
      {
          var value = Hash[KeyToSearch];
      }
      

      但请记住,value 的类型为 object,您必须使用显式强制转换来获取 Point 对象,例如:

      Point value = (Point) Hash[KeyToSearch] ;
      

      如果你使用Dictionary<Point,Point>,那么你可以在不强制转换的情况下达到同样的效果。

      还要补充一点,这里的Point 被认为是来自System.Drawingstruct,如果它是一个类,那么ContainsKey 和基于Key 的访问将比较引用而不是实际值。如果您的Point 是一个类(引用类型),那么您必须覆盖GetHashCodeEquals 您可以查看this answer 了解更多详细信息。

      【讨论】:

        猜你喜欢
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 2011-11-11
        • 1970-01-01
        相关资源
        最近更新 更多