首页 新闻 会员 周边

为什么不调用重载方法呢

0
悬赏园豆:20 [已关闭问题] 关闭于 2011-05-11 21:05

RequestQueue<tt> a = new RequestQueue<tt>(100);

public class RequestQueue<T> 
{
private LinkedList<T> items = new LinkedList<T>();
public int Test(T item)
{
return items.Count(s => s.Equals(item));
}
}

我已经对类tt的Equals方法进行了重载,但是调试运行后发现它硬是不进重载方法,只调用了Object的Equals方法,为什么呢?

问题补充: RequestQueue a = new RequestQueue(100); tt va = new tt() { Im = "1", UA = "2" }; tt vb = new tt() { Im = "1", UA = "3" }; tt vc = new tt() { Im = "1", UA = "2" }; Response.Write(a.Test(va)); ------------- public class tt { public string Im { get; set; } public string UA { get; set; } public override bool Equals(object obj) { tt a = obj as tt; if (a.Im == this.Im && a.UA == this.UA) return true; return false; //return base.Equals(obj); } public override int GetHashCode() { return this.ToString().GetHashCode(); } }
ailove的主页 ailove | 菜鸟二级 | 园豆:382
提问于:2011-04-25 17:32
< >
分享
所有回答(3)
0

你在哪边调用的Test方法,怎么调用的?

Gray Zhang | 园豆:17610 (专家六级) | 2011-04-25 18:59
tt va = new tt() { Im = "1", UA = "2" };
Response.Write(a.Test(va));

直接这样调用啊
支持(0) 反对(0) ailove | 园豆:382 (菜鸟二级) | 2011-04-25 21:13
0

把你重载部分的代码写出来看看,调用部分看不出问题

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2011-04-25 20:09
public class tt
{
public string Im { get; set; }
public string UA { get; set; }
public override bool Equals(object obj)
{
tt a = obj as tt;
if (a.Im == this.Im && a.UA == this.UA)
return true;
return false;
//return base.Equals(obj);
}
public override int GetHashCode()
{
return this.ToString().GetHashCode();
}
}
支持(0) 反对(0) ailove | 园豆:382 (菜鸟二级) | 2011-04-25 21:13
0

items.Count(s => s.Equals(item));的s指的是LinkedList<T> items = new LinkedList<T>() 中的items 不是 tt 这个类的实例

爱研究源码的javaer | 园豆:930 (小虾三级) | 2011-04-26 09:05
但是代码提示s是T类型的呀
支持(0) 反对(0) ailove | 园豆:382 (菜鸟二级) | 2011-04-26 13:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册