none
隐藏基类方法的问题 RRS feed

  • 问题

  • 在隐藏基类方法时,可以一,也可以二,代码如下:

    一、只在派生类中的方法添加关键字new

        public class MyClass
        {
            public class myNestedClass : MyBaseClass
            {
                public new void DoSomething()
                {
                    Console.WriteLine("这是派生类的方法");
                }
            }
        }
       
        public class MyBaseClass
        {

            public void DoSomething()
            {
                Console.WriteLine("这是基类方法");
            }
        }

    二、也可以在基类方法中添加关键字virtual在派生类中添加new

    public class MyClass
        {
            public class myNestedClass : MyBaseClass
            {
                public new void DoSomething()
                {
                    Console.WriteLine("这是派生类的方法");
                }
            }
        }
       
        public class MyBaseClass
        {

            public virtual void DoSomething()
            {
                Console.WriteLine("这是基类方法");
            }
        }

    请问这两种方法的本质区别是什么?


    万物皆变,规则永恒。
    2011年3月10日 3:47

答案

全部回复