C#的委托如何实现JAVA中的协变? 本帖最后由 yongchurui 于 2012-12-27 14:51:36 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class BaseClass { public virtual BaseClass getCopy1() { return new BaseClass(); } public virtual BaseClass getCopy2() { return new BaseClass(); }}class NewClass : BaseClass{ public override BaseClass getCopy1() { return new NewClass(); } public new NewClass getCopy2() { return new NewClass(); }} BaseClass b = new BaseClass(); Response.Write("b:" + b.GetType().Name + "<br/>"); var b_copy1 = b.getCopy1(); Response.Write("b_copy1:" + b_copy1.GetType().Name + "<br/>"); var b_copy2 = b.getCopy2(); Response.Write("b_copy2:" + b_copy2.GetType().Name + "<br/>"); var n = new NewClass(); Response.Write("n:" +n .GetType().Name + "<br/>"); var n_copy1 = n.getCopy1(); Response.Write("n_copy1:" +n_copy1 .GetType().Name + "<br/>"); var n_copy2 = n.getCopy2(); Response.Write("n_copy2:" + n_copy2.GetType().Name + "<br/>"); BaseClass nb = new NewClass(); Response.Write("nb:" + nb.GetType().Name + "<br/>"); var nb_copy1 = nb.getCopy1(); Response.Write("nb_copy1:" + nb_copy1.GetType().Name + "<br/>"); var nb_copy2 = nb.getCopy2(); Response.Write("nb_copy2:" + nb_copy2.GetType().Name + "<br/>");结果:b:BaseClassb_copy1:BaseClassb_copy2:BaseClassn:NewClassn_copy1:NewClassn_copy2:NewClassnb:NewClassnb_copy1:NewClassnb_copy2:BaseClass不知你是否这个意思? FCS校验码 Ftp又会用的吗 急啊 c#数组的几个方法怎么用,那位高手来帮个忙,谢谢 向系统发送一个“双击操作”?treeview展开当前节点下所有节点? 一套面试题,请大家帮帮忙,我统计下正确答案后来共享: 我写了一个类(class1.cs中) ,如何在窗体中使用这个类? c# mdi窗口问题,在线等,急 这个Lina是怎么写的? UNITY美工想转程序开发兼顾,C#入门求教! 厦门高薪招聘c#,.net项目经理 模拟qq群登陆 C#动态生成winForm窗体,并使用窗体控件的属性和控件事件
class BaseClass
{
public virtual BaseClass getCopy1() { return new BaseClass(); }
public virtual BaseClass getCopy2() { return new BaseClass(); }
}
class NewClass : BaseClass
{
public override BaseClass getCopy1() { return new NewClass(); }
public new NewClass getCopy2() { return new NewClass(); }
}
BaseClass b = new BaseClass();
Response.Write("b:" + b.GetType().Name + "<br/>");
var b_copy1 = b.getCopy1();
Response.Write("b_copy1:" + b_copy1.GetType().Name + "<br/>");
var b_copy2 = b.getCopy2();
Response.Write("b_copy2:" + b_copy2.GetType().Name + "<br/>"); var n = new NewClass();
Response.Write("n:" +n .GetType().Name + "<br/>");
var n_copy1 = n.getCopy1();
Response.Write("n_copy1:" +n_copy1 .GetType().Name + "<br/>");
var n_copy2 = n.getCopy2();
Response.Write("n_copy2:" + n_copy2.GetType().Name + "<br/>"); BaseClass nb = new NewClass();
Response.Write("nb:" + nb.GetType().Name + "<br/>");
var nb_copy1 = nb.getCopy1();
Response.Write("nb_copy1:" + nb_copy1.GetType().Name + "<br/>");
var nb_copy2 = nb.getCopy2();
Response.Write("nb_copy2:" + nb_copy2.GetType().Name + "<br/>");
结果:
b:BaseClass
b_copy1:BaseClass
b_copy2:BaseClass
n:NewClass
n_copy1:NewClass
n_copy2:NewClass
nb:NewClass
nb_copy1:NewClass
nb_copy2:BaseClass不知你是否这个意思?