public class MyBase 
{
   public int x;
   public void Show() {}
}
在派生类中用 Show名称声明成员会隐藏基类中的 Show方法,即:public class MyDerivedC : MyBase
{
   new public void Show() {}
}

解决方案 »

  1.   

    不行,因为用new只是在子类中不执行基类的show 方法,但还是可以执行子类的show方法,只不过这个子类方法没用任何具体动作而已
      

  2.   

    虚函数,用new隐藏基类中的同名方法 ,
    ======================================
    namespace ZZConsoleTest
    {

    public class Test1
    {
    public int i = 0;
    public Test1()
    {
    }
    public void method()
    {
    Console.WriteLine("Test1");
    } public virtual void  methodV()
    {
    Console.WriteLine("virtual Test1");
    } } public class Test2 : Test1
    {
    public Test2()
    {
    }
    public new void method()
    {
    Console.WriteLine("Test2");
    } public new void  methodV()
    {
    Console.WriteLine("virtual Test2");
    } } public class ZZConsole
    {
    [STAThread]
    static void Main(string[] args)
    {
    Test2 test = new Test2();
    test.method();
    test.methodV();

    Console.ReadLine();
    }
    }

    }
    =======================
    输出结果
    ========================
    Test2
    virtual Test2
      

  3.   

    To jiezhi() ,zhzuo(秋枫)
        我想让子控件彻底看不到Show()方法;To  liuzxit(如果) 
       直接用private我也试了,Show()方法仍然可见有什么高招请指教!     谢谢!!
      

  4.   

    用private可以看见但不能调用,这样也可以啊,一定要看不见没什么意义吧。
      

  5.   

    参考.NET Framework的处理方式:
    override这个方法,并抛出异常,同时在提示中加上此方法不可用的信息。
    上面所说的办法,虽然隐藏了方法,但还是可以调用的:
    ((BaseClass) this).Method();所以微软这样做是有道理的,这才是靠得住的办法。
      

  6.   

    VIRTUAL是虚方法,可以被重写。
    如果要覆盖,直接NEW一个重名方法,同时声明为PRIVATE就覆盖了。
    楼上的,类型强制转换后,当然可以用啦,呵
      

  7.   

    To nga96(因为我笨,所以努力。陈勇华) 
       同时声明为PRIVATE仍然能看到这个方法!!