父类中的虚方法使用return不会return子类使用base关键字后方法? 10C

class A{
virtual void Test(){
Console.WriteLine("1");
return;
}
}

class B :A {
override void Test(){
base.Test();
Console.WriteLine("2");
}
}

如果考虑写法美观的话,如果让父类中的虚方法对子类方法进行return呢

c#

4个回答

首先你要弄清楚return这个关键字是什么意思就顺了。
return只能跳出当前函数,B中的方法和A中的方法是2个方法,所以A中的return不会对B中的方法有任何干扰

qq_34134398
qq_34134398 我的意思就是 怎么从A方法中 Return掉B方法之后的执行
一年多之前 回复

调用了class B中的方法后不会再调用class A中的方法了

poi_eyes
poi_eyes 回复qq_34134398: public override void Test() { //base.Test(); Test2(); Console.WriteLine("2"); } public void Test2() { Console.WriteLine("1"); return; }
一年多之前 回复
poi_eyes
poi_eyes 回复qq_34134398:return的作用域是父类的父类Class A中的test方法,执行return完return后当前的执行任然在Class B的Test方法中啊
一年多之前 回复
qq_34134398
qq_34134398 回复poi_eyes: 是这个意思,所以如果有这样的需求没法实现了吗?
一年多之前 回复
poi_eyes
poi_eyes 回复qq_34134398: 执行classB中的方法相当于在Test方法中再调用一次父类的test方法,return只能退出父类的Test方法,该方法执行完毕后还会再继续执行console.writeline("2")的。
一年多之前 回复
qq_34134398
qq_34134398 使用base关键字后会调用A中的方法, 目前C#是当方法来调用 所以A中方法Return是无法ReutnB中的方法的,那问题是如果我想在父类中判断进行Return 没法实现 必须要在所有子类中添加判断方法进行Return
一年多之前 回复

其实base.test可以中另外一个方法取代类型下面的方法
class ClassB:ClassA
{
public override void Test()
{
//base.Test();
Test2();
Console.WriteLine("2");
}

    public void Test2()
    {
        Console.WriteLine("1");
        return;
    }
}

如果return加载console.writeln前面估计最后一句输出就无法输出了
class ClassB:ClassA
{
public override void Test()
{
//base.Test();
Test2();
return;//此处加返回下面的语句就没法输出了。
Console.WriteLine("2");
}

    public void Test2()
    {
        Console.WriteLine("1");
        return;
    }
}
qq_34134398
qq_34134398 这样没啥实际意义啊。。我的想法是要父类中进行判断,然后子类是否执行复写的方法, 这样可以不在每个子类中添加判断,目前好像没有可以解决的方法,只能很笨的再每个子类中添加
一年多之前 回复

都已经void了。。。没有返回值了。或者说改改修饰符以后,先各实例化了基类和派生类?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!