c# 在派生类方法中 调用基类的方法
class   a 
 { 
             static   int   x=1; 
             virtual   public   void   m(){Console.Write(x);} 
 } 
 class   b:a 
 { 
             new   static   int   x=2; 
             override   public   void   m(){base.m();} 
 }   
 b.m();         输出的是1;   
 把static去掉,输出2;   
 -------------------------------------------------   
 在派生类调用基类的方法.   
 非静态数据使用派生类的,   
 而静态数据却又使用基类的.   
 为什么要这样设定???   
 这样不是很混乱么? 
------解决方案--------------------不是静态数据和非静态数据的问题,而是你的 x在派生类是new过的,而方法是override的
------解决方案--------------------你把override去掉就是一样的了,而static的不能override。所以没有什么混乱的地方。
------解决方案--------------------而且你的命名很不规范,类名,public的方法首字母请大写
------解决方案--------------------class a 
 { 
     static int x=1; 
     virtual public void m(){Console.Write(x);} 
 } 
 class b:a 
 { 
     new static int x=2; 
     override public void m(){this.m();} 
 }
------解决方案--------------------刚才没看清楚,请给出所有结果所对应的代码……
------解决方案--------------------我建议你把你的代码贴全面些
------解决方案--------------------试试。是不是有编译警告? 
     class a 
     { 
         static int x = 1; 
         virtual public int m() { return x; } 
     } 
     class b : a 
     { 
         new static int x = 2; 
         override public int m() { return m(); } 
     } 
------解决方案-----------------------输出结果还是1啊。不是2--- 
         static void CallA() 
         { 
             b b1= new b(); 
             b1.m(); 
         }   
         class a 
         { 
             int x = 1; 
             virtual public void m() { Console.WriteLine(x);  } 
         } 
         class b : a 
         { 
             new int x = 2; 
             override public void m() { base.m();  } 
         } 
------解决方案--------------------using System;   
 class a 
 { 
     int x = 1; 
     virtual public void m() { Console.Write(x); } 
 } 
 class b : a 
 { 
     new int x = 2; 
     override public void m() { base.m(); } 
 } 
 public class Demo 
 { 
     public static void Main() 
     { 
         b b1 = new b(); 
         b1.m(); 
     } 
 } 
 =========================== 
 输出1     
 using System;   
 class a 
 { 
     static int x = 1; 
     virtual public void m() { Console.Write(x); } 
 } 
 class b : a 
 { 
     new static int x = 2; 
     override public void m() { base.m(); } 
 } 
 public class Demo 
 { 
     public static void Main() 
     { 
         b b1 = new b(); 
         b1.m(); 
     } 
 } 
 ============================= 
 输出1   
 你的Main函数怎么写的? 
------解决方案--------------------为什么 我总 是输出 1