在网上找了半天,也没有解决问题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");
    }
}哪位帮忙改一下,谢谢!

解决方案 »

  1.   

    LZ看看虚方法和抽象方法的定义就能OK
      

  2.   

    QUOTE:是不是我上面的代码是用了2个类,所以不能重载,重载只能只在一个类里面?
    ---------------
    差不多是这个意思吧,你将重载与虚方法的重写混淆了.
      

  3.   

    我尝试着把上面的2个类的代码放在一个类中,编译器提示还是报这个错误:no suitable method found to override哪位老大能否出手,根据上面的2个类,写一个重载的例子让我学习,谢谢!
      

  4.   

    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");
        }
      

  5.   

    QUOTE:我尝试着把上面的2个类的代码放在一个类中
    ----------------------
    刚才不说,你将重载与虚方法重写两个概念混淆了.[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)
    {
    //
    }
    }
      

  6.   

    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)
    {
    //
    }
    }
      

  7.   

    如果把参数去掉,不就是重写,不是重载吧,我基础差,可能理解不正确顺便问一下,方法签名要一样,这里的"签名"是啥意思,是方法名称的意思?书上的重载的源代码:using System;
    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");
            }
        }
    }
      

  8.   

    public override void MethodD(int a)
    去掉override 
    或是去掉int a
      

  9.   

    public override 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()//这里出错:overrideClass.MethodD(int)': no suitable method found to override
        {
            System.Web.HttpContext.Current.Response.Write("这是重载:" + "overrideClass.MethodD");
        }
    就哦了