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

C#:子类实例如何获取另一基类实例的字段值(输出不符预期)

问题分析与解决方案:让SlackHelper实例获取CloudCollectionHelper的DatabaseID值

嘿,我来帮你拆解下问题所在:你现在的代码里创建了两个完全独立的对象实例——cloudHelper和slackHelper。虽然SlackHelper继承自CloudCollectionHelper,但这两个实例的属性是各自独立的,你给cloudHelper.DatabaseID赋值12345,根本不会影响到slackHelper的DatabaseID(它会保持默认值0),这就是为什么输出是0而不是预期的12345。

下面给你两种可行的解决方案,按需选择:

方案1:直接操作SlackHelper实例(最贴合你的继承设计)

既然SlackHelper继承了CloudCollectionHelper,那它本身就拥有DatabaseID属性,直接给slackHelper的这个属性赋值就行,不需要单独创建一个CloudCollectionHelper实例:

using System;
public class Program {
    public static void Main() {
        SlackHelper slackHelper = new SlackHelper();
        slackHelper.DatabaseID = 12345; // 直接给SlackHelper实例的属性赋值
        Console.WriteLine(slackHelper.GetSlackPageTokens());
    }
    class CloudCollectionHelper {
        public long DatabaseID { get; set; }
    }
    class SlackHelper:CloudCollectionHelper {
        public long GetSlackPageTokens() {
            return DatabaseID;
        }
    }
}

方案2:传递CloudCollectionHelper实例(适合需要复用已有实例的场景)

如果你的业务逻辑里确实需要保留CloudCollectionHelper的实例,并且让SlackHelper复用它的数据,可以通过构造函数把cloudHelper传递给SlackHelper:

using System;
public class Program {
    public static void Main() {
        CloudCollectionHelper cloudHelper = new CloudCollectionHelper();
        cloudHelper.DatabaseID = 12345;
        SlackHelper slackHelper = new SlackHelper(cloudHelper); // 把实例传递给SlackHelper
        Console.WriteLine(slackHelper.GetSlackPageTokens());
    }
    class CloudCollectionHelper {
        public long DatabaseID { get; set; }
    }
    class SlackHelper {
        private readonly CloudCollectionHelper _cloudHelper;
        
        // 通过构造函数接收CloudCollectionHelper实例
        public SlackHelper(CloudCollectionHelper cloudHelper) {
            _cloudHelper = cloudHelper;
        }
        
        public long GetSlackPageTokens() {
            return _cloudHelper.DatabaseID;
        }
    }
}

核心知识点总结

别混淆类继承和对象实例的概念:继承只是让子类拥有父类的成员定义,但每个对象实例的成员都是独立存储的——修改一个实例的属性,不会自动同步到另一个实例上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:39:08