gpt4 book ai didi

.net - 区分基类的派生类的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 05:23:43 25 4
gpt4 key购买 nike

我有基类 BaseClass 和派生类 DerivedADerivedBDerivedC 它们都继承了 基类

我有另一个类 ExternalClass,其方法接受类型为 BaseClass 的参数,但实际上传递给派生类。如果我想根据接收到的派生类执行不同的操作,那么在 ExternalClass 中区分这些类的最佳方法是什么?

我正在考虑做一个Select,但我不确定怎么做。

最佳答案

您的设计很可能存在缺陷。您应该考虑使该行为成为 BaseClass 的方法,并在每个派生类中覆盖它。您不应该检查对象的实际类型。

也就是说,ExternalClass 应该只调用在 BaseClass 中声明的方法,而不考虑实际类型。由于该方法被派生类覆盖,因此将调用适当的实现。

也就是说,要检查一个对象是否是某个类型或其派生类的实例,您可以使用 is 运算符:

if (obj is DerivedA) // C#
If TypeOf obj Is DerivedA Then ' // VB

如果要检查对象是否是特定类型(而不是其派生类型)的实例:

if (obj.GetType() == typeof(DerivedA)) // C#
If obj.GetType() Is GetType(DerivedA) Then ' // VB

关于.net - 区分基类的派生类的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349961/

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