C#如何在其他类访问private私有变量,现有代码访问失败求排查
问题说明
你的代码存在2个核心错误,直接导致编译/运行失败:
- 违反了
private访问修饰符的访问规则
C#里被private修饰的成员,仅允许在声明该成员的类内部访问,你声明的Abc属性属于AccessModifiers类的私有成员,而你尝试访问它的位置是另一个独立类Program中,哪怕创建了AccessModifiers的实例也没有权限直接访问私有成员,这是C#封装特性的基础限制。 - 存在语法错误
代码中Console.WriteLine(acc.Abc)行末尾缺少C#语句要求的结束符;,即便解决了访问权限问题,这段代码也会编译报错。
修复方案
如果需要在Program类中访问Abc属性,按需调整访问修饰符即可,示例修复后的代码如下:
using System; namespace lab_first { public class AccessModifiers { // 将private改为public,允许外部类访问 public int Abc { get; set; } private int bcd { get; set; } } class Program { static void Main(string[] args) { var acc = new AccessModifiers(); // 补充分号 Console.WriteLine(acc.Abc); } } }
如果不需要完全公开属性,也可以根据实际访问范围需求,替换为internal(同程序集可访问)、protected(仅派生类可访问)等其他访问修饰符。
内容的提问来源于stack exchange,提问作者sumitkhatrii
相关产品推荐
相关产品推荐

