【发布时间】: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));
【问题讨论】:
谁能告诉我如何在哈希表中搜索特定键并推迟变量中的相应值(例如,键和值都来自类 point)
我添加如下值:
Hashtable Hash = new Hashtable();
Hash.Add(new Point(Po.X - 1, Po.Y), new Point(Po.X, Po.Y));
【问题讨论】:
您可以使用以下内容:
Point value;
if (Hash.ContainsKey(YourKey))
{
value = (Point)Hash[YourKey];
}
【讨论】:
您应该查看通用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.Drawing 的struct,如果它是一个类,那么ContainsKey 和基于Key 的访问将比较引用而不是实际值。如果您的Point 是一个类(引用类型),那么您必须覆盖GetHashCode 和Equals 您可以查看this answer 了解更多详细信息。
【讨论】: