You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断基类对象是否由子类实例转换而来?

判断基类引用指向的实际子类类型(C#)

针对你给出的场景,有两种常用且正确的写法来判断基类引用指向的实际子类类型,同时这种需求完全可行:

1. 使用 is 运算符(兼容类型检查)

is 运算符会检查对象是否是指定类型或其派生类型的实例,写法如下:

SubClass sc = new SubClass();
BaseClass bc = sc;

if (bc is SubClass)
{
    Console.WriteLine("bc 原本是 SubClass 的实例");
}

如果你的子类还有更深的派生类(比如 SubSubClass : SubClass),当 bc 指向 SubSubClass 实例时,bc is SubClass 也会返回 true。

2. 使用 GetType() + typeof()(精确类型匹配)

如果你需要精确匹配原始类型(排除派生类的情况),可以用 GetType() 获取对象的实际运行时类型,再和目标类型对比:

SubClass sc = new SubClass();
BaseClass bc = sc;

if (bc.GetType() == typeof(SubClass))
{
    Console.WriteLine("bc 精确属于 SubClass 类型");
}

这种方式下,只有当 bc 的实际类型就是 SubClass(而非它的子类)时,判断才会成立。

另外注意你示例代码里的 bs 是笔误,应该是 bc。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:44:52