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

如何访问C#中父类类型变量指向的子类实例的独有变量?

问题根因
  • 变量p_tester的声明类型是父类p,C#编译阶段只会校验声明类型定义的成员,父类p中没有定义tester字段,所以直接访问会编译报错。
  • 你写的Console.Writeline(p_1.tester)存在语法错误:tester是实例成员,不是静态成员,不能直接用类名p_1访问,必须通过实例对象访问。
实现方案

你要的操作完全可行,不需要在父类中声明所有子类的成员,有以下几种常用实现方式:

1. 显式强制转换

确定实例实际是p_1类型时使用,类型不匹配会抛出异常:

p p_tester = new p_1();
Console.WriteLine(((p_1)p_tester).tester);

2. 安全转换(as操作符)

转换失败会返回null,不会抛出异常,适合不确定实例类型的场景:

p p_tester = new p_1();
p_1 p1Inst = p_tester as p_1;
if(p1Inst != null)
{
    Console.WriteLine(p1Inst.tester);
}

3. 模式匹配(C# 7.0+推荐)

语法更简洁,转换+判空一步完成:

p p_tester = new p_1();
if(p_tester is p_1 p1Inst)
{
    Console.WriteLine(p1Inst.tester);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:45:03