我刚从6。0转到.net ,在c++2005中使用Hashtable,大概原型是这样
ref class PointPair: public IComparable
{
public:
int First;
int Second;
.....
virtual bool Equals(PointPair^ p)
{
if((First ==p->First && Second ==p->Second) || (First ==p->Second && Second ==p->First))
{
return true;
}
else
{
return false;
}}
使用hashtable时添加键值为下面的格式
ht->add(gcnew PointPair(p1,p2),value);
可查找时按如下格式却找不到
ht->ContainKey(gcnew PointPair(p1,p2));
查找相同键值始终返回false请问这是不是引用出的问题,怎么解决
请问在C#中这种问题怎么解决的
ref class PointPair: public IComparable
{
public:
int First;
int Second;
.....
virtual bool Equals(PointPair^ p)
{
if((First ==p->First && Second ==p->Second) || (First ==p->Second && Second ==p->First))
{
return true;
}
else
{
return false;
}}
使用hashtable时添加键值为下面的格式
ht->add(gcnew PointPair(p1,p2),value);
可查找时按如下格式却找不到
ht->ContainKey(gcnew PointPair(p1,p2));
查找相同键值始终返回false请问这是不是引用出的问题,怎么解决
请问在C#中这种问题怎么解决的
解决方案 »
- 奇怪,突然到不到类SocketAsyncEventArgs了,重新安装VS2005还没有解决!
- 现在小弟需要做一个报表功能,可以导出到excel,可以打印。格式简单的知道用dataset或者gridview导出到excel,但是这种格式不会
- 权限控制请各位朋友帮忙
- TextBox tb = (TextBox)sender
- 使用.net中的水晶报表还要注册吗?是不是收费的?
- 去晚了,这个C#的聊天程序不再给下载了,真泄气,不知哪位大哥曾下载过?谢谢!!!
- C#对数据库操作的问题
- Request.QueryString问题
- 求一个高难度的正则表达式
- net文档中为什么会有这样的字眼--"旧式的Activex"。是不是微软要淘汰他,
- 打印问题
- 滚动滚动条后,位置不对的问题
等于自杀
的GetHashCode
如果
这样
PointPair^ p1 = gcnew PointPair( ..... )
ht->add(p1);
ht->ContainKey(p1); //这里不用你实现GetHashCode 因为引用的同一性
而
ht->ContainKey(gcnew PointPair()) //这里必须要求你实现GetHashCode,因为不是同一个对象,或者你使用 结构 不要用Class, 因为结构是值类型
virtual int GetHashCode() override
{
return First ^ Second;
}可是仍然找不到,难道是算法有问题吗?
Equals( object^ o ) 非 Equals(PointPaire^ )