C#在哈希表中查找密钥并收集相应的值

时间:2014-08-20 12:38:52

标签: c# hashtable point

任何人都可以告诉我如何在哈希表中搜索特定键并在变量中添加相应的值(例如,两个键和值都来自类point

我添加了以下值:

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

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

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

答案 1 :(得分:2)

您应该查看通用Dictionary<T,T>,而不是HashTable(如果您使用的是.Net framework 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被视为来自struct的{​​{1}},如果是System.Drawing类,则基于ContainsKey进行访问会比较参考而不是实际值。如果您的Key类(参考类型),那么您必须覆盖PointGetHashCode您可能会看到this answer以获取更多详细信息。