gpt4 book ai didi

c# - 您如何使用可以是多种类型的变量?

转载 作者:太空狗 更新时间:2023-10-29 23:57:47 24 4
gpt4 key购买 nike

我经常使用以下方式将对象链接到它们的 parent :

 Video parent;

有时我的对象可以是不同对象类型的子对象,我也是这样:

 int parentType;
Video parentVideo; // if parent == VIDEO then this will be used
Audio parentAudio; // if parent == AUDIO then this will be used

有没有更好的方法?如何使用可以是不同类型实例的变量?

编辑:当然,如果视频和音频继承自同一个基类(例如媒体),我可以这样做:

 Media parent;

但是如果父类不是从同一个基类继承呢?

最佳答案

我假设您问题中的类型是密封的。在这种情况下,我将只使用 object parent 并在出路时使用 as 。 (使用 as 可以比检查标志产生更高的性能影响,但是......我所做的任何事情都不是问题,它也可以很好地用于 null-guard。)

Video video = null;
if ((video = parent as Video) != null) {
// know we have a (non-null) Video object here, yay!
} else if (...) {
// maybe there is the Audio here
}

上面实际上只是一种愚蠢的 C# 方式,它在不受约束的可区分联合上编写一次性模式匹配(对象是 C# 中所有其他类型的联合 :-)

关于c# - 您如何使用可以是多种类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com