在网上找了半天,也没有解决问题C#2.0
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public class employee
{
public employee()
{
} public void MethodA()
{
System.Web.HttpContext.Current.Response.Write("employee.MethodA");
} public virtual void MethodC()
{
System.Web.HttpContext.Current.Response.Write("employee.MethodC");
} public virtual void MethodD()
{
System.Web.HttpContext.Current.Response.Write("employee.MethodD");
}
}using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public class overrideClass : employee
{
public overrideClass()
{
} public void test()
{
System.Web.HttpContext.Current.Response.Write("overrideClass.test");
}
public override void MethodD(int a)//这里出错:overrideClass.MethodD(int)': no suitable method found to override
{
System.Web.HttpContext.Current.Response.Write("这是重载:" + "overrideClass.MethodD");
}
}哪位帮忙改一下,谢谢!
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public class employee
{
public employee()
{
} public void MethodA()
{
System.Web.HttpContext.Current.Response.Write("employee.MethodA");
} public virtual void MethodC()
{
System.Web.HttpContext.Current.Response.Write("employee.MethodC");
} public virtual void MethodD()
{
System.Web.HttpContext.Current.Response.Write("employee.MethodD");
}
}using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public class overrideClass : employee
{
public overrideClass()
{
} public void test()
{
System.Web.HttpContext.Current.Response.Write("overrideClass.test");
}
public override void MethodD(int a)//这里出错:overrideClass.MethodD(int)': no suitable method found to override
{
System.Web.HttpContext.Current.Response.Write("这是重载:" + "overrideClass.MethodD");
}
}哪位帮忙改一下,谢谢!
---------------
差不多是这个意思吧,你将重载与虚方法的重写混淆了.
和
MethodD(int a)
两个方法参数就不一样。
把override去掉或者把参数去掉。
方法签名要一样。public void MethodD(int a)//这里出错:overrideClass.MethodD(int)': no suitable method found to override
{
System.Web.HttpContext.Current.Response.Write("这是重载:" + "overrideClass.MethodD");
} public override void MethodD()
{
System.Web.HttpContext.Current.Response.Write("这是重载:" + "overrideClass.MethodD");
}
----------------------
刚才不说,你将重载与虚方法重写两个概念混淆了.[code=C#]
class C1
{
public F()
{
//...
}public F(int p1)
//这个方法与上面一个方法 F()同名,但签名不一样,即我现在这个方法传递一个参数 int,签名不一样.
//象这样在同个类,同名方法,但签名不一样,叫方法重载
{
//...
}public virtual G(bool isTrue)
//virtual 表示这是一个虚方法,可以在继承类里重写,即override
{
//...
}
}
//end of C1class C2 : C1
{
public override G(bool isTrue)
//该类继承自C1类,但我这里又有一个基类存在的方法 G(),但我是重写(override),合法,前提是方法签名一样,都是G(bool isTrue)
{
//
}
}
{
public F()
{
//...
}public F(int p1)
//这个方法与上面一个方法 F()同名,但签名不一样,即我现在这个方法传递一个参数 int,签名不一样.
//象这样在同个类,同名方法,但签名不一样,叫方法重载
{
//...
}public virtual G(bool isTrue)
//virtual 表示这是一个虚方法,可以在继承类里重写,即override
{
//...
}
}
//end of C1class C2 : C1
{
public override G(bool isTrue)
//该类继承自C1类,但我这里又有一个基类存在的方法 G(),但我是重写(override),合法,前提是方法签名一样,都是G(bool isTrue)
{
//
}
}
namespace Donis.CsharpBook
{
public class Starter
{
public static void Main()
{
Yclass obj = new Yclass();
obj.MethodA();
obj.MethodA(0); }
} public class Zclass
{
public virtual void MethodA()
{
System.Web.HttpContext.Current.Response("Zclass.MethodA");
}
} public class Yclass : Zclass
{
public override void MethodA(int a)
{
System.Web.HttpContext.Current.Response("Yclass.MethodA");
}
}
}
去掉override
或是去掉int a
{
System.Web.HttpContext.Current.Response.Write("这是重载:" + "overrideClass.MethodD");
}
换成public override void MethodD()//这里出错:overrideClass.MethodD(int)': no suitable method found to override
{
System.Web.HttpContext.Current.Response.Write("这是重载:" + "overrideClass.MethodD");
}
就哦了