【发布时间】:2023-03-15 14:31:01
【问题描述】:
我经常使用以下方法将对象链接到它们的父对象:
Video parent;
有时我的对象可以是不同对象类型的子对象,我也是:
int parentType;
Video parentVideo; // if parent == VIDEO then this will be used
Audio parentAudio; // if parent == AUDIO then this will be used
有没有更好的方法? 如何使用可以是不同类型实例的变量?
编辑:当然,如果 Video 和 Audio 继承自同一个基类(例如 Media),我可以这样做:
Media parent;
但是如果父母不是从同一个基类继承呢?
【问题讨论】:
-
你能提供更多细节吗?什么样的对象可以有一个音频或视频“父级”?你对父母进行了哪些操作——
Object parent就足够了吗? -
是的,正如丝绸所描述的,您正试图以错误的方式使用继承。音频不是视频,反之亦然。但是,它们都是媒体类型,并且都包含一些数据。那是他们应该共享的界面。
-
"但是如果父母没有从同一个基类继承呢?"这个问题以虚假为前提。两种类类型总是从同一个基类继承(直接或间接):System.Object。
-
@Eric:那条评论到底有什么用?考虑到它的迂腐程度,它也是错误的,System.Object 不是从 System.Object 继承的。我认为像你这样的人实际上可以提供有用的反馈。
-
这是有用的反馈,因为它指出发帖人忘记了一个重要的点:变量可以被设为对象类型。那肯定能解决问题。
标签: c# types strong-typing base-class