微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取基类变量的派生方法

如何解决获取基类变量的派生方法

我有两个类,基类 b 和派生类。在我的代码中,我调用一个带有基类参数的方法,但我想检测该参数是否是导数。如果是导数,我想调用一个只在导数中的方法

我的代码示例:
班级

public class Base {}

public class Derivative : Base {
    public void foo() {
        //do something...
    }
}

带参数的方法

void Action (Base b) {
    if (b is Derivative) {
        b.foo();
    }
}

问题在于它将 b 视为 Base 类。是否可以保留此引用但使用派生类方法

解决方法

在现代 C# 中:

void Action (Base b) {
    if (b is Derivative derived) {
        derived.foo();
    }
}

在旧的 C# 中:

void Action (Base b) {
    var derivative = b as Derivative;
    if(derivative != null) derivative.foo();    
}

我会警惕这种模式,但这超出了本问题的范围

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。