virtual函数主要是用来应对多态的,所以在override函数里面可以直接调用直接基类的方法,但要调用直接基类的基类可能只有通过实例来实现了,比如:class Base1 { public virtual func() ... }
class Base2 : Base1 { public override func() ... }
class Base3 : Base2 {
public override func()
{
// 我想在这里调用Base1::func,能否行得通?
// 试过base.base.func(),编译通不过。
Base1 b1=new Base1();
b1.func(); 。
}
}
直接调用我也估计是不成的。但是确实有这样的需要,有没有间接的办法,比如反射什么的? goodluck001(Endeavoring):
谢谢,但是那样不符合要求。我希望方法的作用效果是对于Base3本身,而不是另外一个临时的Base1对象。
{
public override func() ...
public funD()
{
base.func();
}
}
Base2类里写个方法调用基类。。
Class3 c3=new Class3();
Class4 c4=new Class4();
string s3= c3.GetValue();//s3="Class1"
string s4= c4.GetValue();//s4="Class2"
--------------------------
public class Class1
{
public Class1(){}
public string GetValue()
{
return "Class1";
}
}public class Class2:Class1
{
public Class2(){}
new public string GetValue()
{
return "Class2";
}
}
public class Class3:Class2
{
public Class3(){}
new public string GetValue()
{
return ((Class1)this).GetValue();
}
}
public class Class4:Class2
{
public Class4(){}
new public string GetValue()
{
return ((Class2)this).GetValue();
}
}
如果我能随便修改base1和base2,那么可行的办法多得很,也就没有必要再为这个问题费脑筋了。