C# 访问修饰符(说明符)详解:从 private 到 protected internal 实战
什么是 C# 访问修饰符?
访问修饰符——控制类型和类型成员可见性的关键字——是 C# 封装的基石。它们决定哪些代码可以引用类、属性或方法,确保只有程序预期部分能与内部实现细节交互。
C# 提供六种访问修饰符:
- Private
- Public
- Protected
- Internal
- Protected Internal
- Private Protected
本教程你将学习:
- 访问修饰符是什么及其重要性
- Private、Public、Protected、Internal 修饰符深度解析
- 构造函数如何初始化类字段
Private 访问修饰符
将成员标记为 private 将其用法限制在包含类内部。外部代码——包括同一程序集内的其他类——无法引用私有成员。
Private 访问修饰符示例
修改 Tutorial.cs 中的 SetTutorial 说明此规则。将 public 改为 private:

切换到 Program.cs。编译器会用红色波浪线标记 SetTutorial 调用,表明该方法从此处不可访问。

Public 访问修饰符
公共成员对任何能引用包含类型的代码可见。这是未指定访问修饰符成员的默认值。
Public 访问修饰符示例

因为 SetTutorial 声明为 public,可从 Program.cs 调用且无编译错误。
Protected 访问修饰符
protected 成员仅在其自身类及派生类中可访问。此访问级别适合创建可复用基类同时保护内部实现。
Internal 访问修饰符
内部成员对同一程序集内所有代码可见,但对其他程序集代码不可见。这适用于仅向库消费者暴露的库组件。
C# 构造函数
构造函数初始化类的新实例。它们与类同名、无返回类型,在使用 new 时自动调用。
- 构造函数默认访问为
public,除非另有指定。 - 构造函数不能声明返回类型。
C# 构造函数示例
演示一个在创建 Tutorial 对象时为 TutorialID 和 TutorialName 设置默认值的构造函数。
步骤 1) 向 Tutorial.cs 添加构造函数:

代码解析
- 名为
Tutorial的方法被视为构造函数。实例化时自动运行。 - 构造函数将
0赋给TutorialID,将"Default"赋给TutorialName,确保一致的初始状态。
在 Program.cs 中移除 SetTutorial 调用以聚焦构造函数行为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication {
class Tutorial {
public int TutorialID;
public string TutorialName;
public Tutorial() {
TutorialID = 0;
TutorialName = "Default";
}
public void SetTutorial(int pID, string pName) {
TutorialID = pID;
TutorialName = pName;
}
public string GetTutorial() {
return TutorialName;
}
static void Main(string[] args) {
Tutorial pTutor = new Tutorial();
Console.WriteLine(pTutor.GetTutorial());
Console.ReadKey();
}
}
}
代码解析
- 使用
new关键字创建Tutorial实例。 GetTutorial方法获取默认TutorialName,通过Console.WriteLine显示。
执行时控制台显示:
输出:

输出确认构造函数运行并将 TutorialName 初始化为 "Default"。
注意: "Default" 值源自构造函数,而非外部代码。
总结
- 访问修饰符定义类成员可见性。
private对所有外部代码隐藏成员。public向任何引用代码暴露成员。protected将成员限制在类及其后代。internal将可见性限制在当前程序集。- 构造函数在对象实例化时初始化字段。
C语言
- 理解 C# 访问修饰符:public、private、protected、internal 等完全指南
- C++ do-while 循环详解:语法、实战示例与嵌套循环
- C++ 指针精通:核心概念、代码示例与实战应用
- C++ 运算符重载实战指南:语法、方法、限制与代码示例
- C++ 函数详解:从声明到调用的实战指南
- C# 集合实战教程:ArrayList、Stack、Queue、Hashtable 等核心类型全解析
- Python str.count() 完全指南:统计字符与子串出现次数实战
- Python round() 函数详解与实战示例
- 精通 Python map() 函数:语法、示例与最佳实践
- Python timeit():精准测量代码执行时间与实战示例
- Python list.count() 专家指南:语法、示例与性能解析
- Java 修饰符详解:类型、用法与最佳实践