任何人都可以告诉我如何在哈希表中搜索特定键并在变量中添加相应的值(例如,两个键和值都来自类point
)
我添加了以下值:
Hashtable Hash = new Hashtable();
Hash.Add(new Point(Po.X - 1, Po.Y), new Point(Po.X, Po.Y));
答案 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
是类(参考类型),那么您必须覆盖Point
和GetHashCode
您可能会看到this answer以获取更多详细信息。