.net知识和学习方法系列(四)继承中方法的隐藏和重写

桂素伟

最近在教学生时,学员老理解不清方法的隐藏和重写,后来想了想,终于能用反射能让学生明白这两者的区别!
看一下例子:
隐藏:

 

1     class Class1
 2      {
 3         public void Method()
 4          { 
 5         
 6         }
 7     }
 8     class Class2 : Class1
 9      {
10         public new void Method()
11          { 
12         
13         }
14     }
15

重写:

方法的重写

1    class  Class1
  2      {
  3          public   virtual    void  Method()
  4        { 
  5         
  6         }
  7     }
  8      class  Class2 : Class1
  9      {
 10          public   override    void  Method()
 11          { 
 12         
 13         }
 14     }

在上面的代码中,对于初学者可能理解不了什么是隐藏,什么是重写,因为在实例化这两个类后,调用它们的方法时,都只是 Class2中 Method()的方法在执行,怎么能看出来呢?

其实引用下面代码即反射就能来看出方法的隐藏还是重写:

1            MemberInfo[] MI=typeof(Class2).GetMethods ();
2            foreach (MemberInfo mi in MI)
3             {
4              Console .WriteLine (mi.Name);
5            }

我们可以在上面的两种状态下来看一下结果,如下

隐藏方法如下图:

重写的方法如下图:

可见隐藏后是两个 Method方法,重写后是一个 Method方法。

 

 

下一篇:(桂素伟).net知识和学习方法系列(五)关于CSharp的属性