C#类成员访问修饰符详解:public、private与protected的作用域

小林子
小林子
发布时间:2026-10-14| 4人浏览过
原创

C#类中的访问修饰符定义了成员的可访问范围。public允许外部访问,private仅限类内部,protected对派生类可见。合理使用这些修饰符是封装数据的关键。

核心访问修饰符概览

C#提供多种访问修饰符来控制类成员的可见性。常用的修饰符包括:

  • public:公有。任何代码都可以访问。
  • private:私有。仅限定义该成员的类内部访问。
  • protected:受保护。仅限于该类内部及其直接派生类访问。
  • internal:当前程序集内所有代码均可访问。

不同场景下的访问控制

第1步:在普通类中使用 public 与 private

目的:明确区分接口暴露与内部实现细节。
操作:创建一个测试类,分别定义公有和私有字段。

class TestClass
{
    public int a = 0;  // 外部可访问
    private int b = 0; // 仅内部可访问
}

结果:实例化 TestClass 后,可以直接读取 a,但尝试读取 b 会导致编译错误。

第2步:验证 protected 的继承访问权限

目的:展示受保护成员在基类实例与派生类实例间的差异。
操作:创建派生类 C 继承自 TestClass。

class C : TestClass
{
    private void st()
    {
        TestClass tec = new TestClass();
        C bo = new C();
        
        // 正确:基类的public成员可通过任何引用访问
        int aa = tec.a;
        
        // 错误:base instance无法访问protected成员
        // int cc = tec.c;
        
        // 正确:派生类实例可以访问其自身的protected成员
        int tt = bo.c;
    }
}

注意:protected 成员只能通过派生类的实例来访问其自身的该成员,而不能通过基类类型的变量访问。

第3步:了解 static 修饰符的特殊性

目的:理解静态成员属于类本身而非特定对象。
操作:在类中添加静态字段。

class TestClass
{
    public static int d = 0; // 类级共享变量
    private int e = 0;       // 实例变量
}

规则:静态方法只能直接访问静态成员。若在初始化块或属性赋值中引用非静态字段,将引发异常。

完成判断

通过上述步骤,您可以观察到:

  1. public 成员在全局范围内可见。
  2. private 成员严格局限于类体内部。
  3. protected 成员在继承链中具有传递性,但必须作用于自身或派生类的实例上。

以上就是C#访问修饰符的详细内容,更多关于C#面向对象编程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。