C#在哈希表中查找一个键并收集相应的值

C#在哈希表中查找一个键并收集相应的值,c#,hashtable,point,C#,Hashtable,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]; } 您可以使

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

我添加如下值:

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];
}

您可以使用以下选项:

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

您不应该查看HashTable,而应该查看generic。(如果您使用的是.Net framework 2.0或更高版本)

但是,如果您想从当前非泛型
哈希表中获取密钥,可以执行以下操作:

var KeyToSearch = new Point(10 - 1, 20);
if (Hash.ContainsKey(KeyToSearch))
{
    var value = Hash[KeyToSearch];
}
但请记住,
属于
对象
类型,您必须使用显式强制转换来获取
对象,如下所示:

Point value = (Point) Hash[KeyToSearch] ;
如果您要使用
字典
,则无需强制转换即可实现同样的效果


还有一件事需要补充,
在这里被认为是来自
系统的
结构。绘制
,如果它是一个类,那么
包含skey
和基于
键的访问将比较参考值而不是实际值。如果您的
是一个类(引用类型),那么您必须覆盖
GetHashCode
等于
,您可以查看更多详细信息

而不是
哈希表
您应该查看泛型。(如果您使用的是.Net framework 2.0或更高版本)

但是,如果您想从当前非泛型
哈希表中获取密钥,可以执行以下操作:

var KeyToSearch = new Point(10 - 1, 20);
if (Hash.ContainsKey(KeyToSearch))
{
    var value = Hash[KeyToSearch];
}
但请记住,
属于
对象
类型,您必须使用显式强制转换来获取
对象,如下所示:

Point value = (Point) Hash[KeyToSearch] ;
如果您要使用
字典
,则无需强制转换即可实现同样的效果

还有一件事需要补充,
在这里被认为是来自
系统的
结构。绘制
,如果它是一个类,那么
包含skey
和基于
键的访问将比较参考值而不是实际值。如果您的
是一个类(引用类型),那么您必须覆盖
GetHashCode
等于
,您可以查看更多详细信息