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

C#继承公共类后无法访问父类成员的问题求助

问题分析与解决:无法访问父类成员的保护级别问题

问题出在父类字段的默认访问修饰符上:
在C#中,类的成员(字段、方法等)如果没有显式声明访问修饰符,默认是private(私有)。私有成员仅能在定义它的类内部访问,子类无法继承或直接调用——哪怕父类本身是public的也不行。你的Appstrings类里的wrongUserName字段就是默认的私有级别,所以子类AppEngine无法访问。

解决方案(三种常用方式)

  1. 改为protected修饰符(推荐用于仅子类访问的场景)
    修改Appstrings类的字段定义,将默认私有改为protected,这样子类可以访问,外部类则无法直接调用:

    public class Appstrings
    {
        protected string wrongUserName = "Wrong username. Please check and try again..";
    }
    
  2. 改为internal修饰符(适合同命名空间内类共享的场景)
    如果需要同命名空间下的其他类也能访问该字段,可以用internal:

    public class Appstrings
    {
        internal string wrongUserName = "Wrong username. Please check and try again..";
    }
    
  3. 改为public属性封装(适用于需要外部访问的场景,符合C#编码规范)
    直接暴露字段不是最佳实践,推荐用只读属性封装,既保证外部可以访问,又能控制字段的修改逻辑:

    public class Appstrings
    {
        public string WrongUserName { get; } = "Wrong username. Please check and try again..";
    }
    

    子类调用时对应修改为属性名(遵循C#大驼峰命名规范):

    public async Task<string> Testing()
    {
        return WrongUserName;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:03:30