C#执行在基类列表上工作的派生方法

问题描述 投票:0回答:1

我在正确获取派生类的副本时遇到问题,但是在基类列表上工作。

所以我有简单的基类CBase,几乎没有变量和CDerived : CBase

派生类还有其他一些变量,它是重写基类方法Copy(),以返回具有相同变量值的自身新实例。 (我有更多从CBase继承的类)

例如,我正在处理List<CBase> CList的执行方法列表GetCopyOfFirst()return CList[0].Copy();然后看起来list元素仅使用基本方法。

(它创建新实例,但派生类变量具有初始值,例如不会发生对Copy()的重写,仅对base.Copy()“)

当我执行CDerived other = ... // Some reference CDerived d = other.Copy();时它就起作用了。

如何通过处理基类类型来执行派生类的东西?我可以吗?

c# parent derived-class
1个回答
-1
投票

您应该override派生类中的方法定义,而且,它应该在基类中声明为虚函数,以具有所需的功能。您可能将方法定义为常规定义。因此,派生类中的复制方法将隐藏基本复制方法,而不是覆盖它。这就是为什么当您从基本指针调用时,将执行基类的copy方法。

© www.soinside.com 2019 - 2024. All rights reserved.