可访问性修饰符是用来控制代码 “能被谁访问”,它属于 关键字1 的一种,简单理解就是给代码设置
权限等级
就像现实生活中
在 C# 中,这种权限控制就是通过 访问修饰符 来实现的。
如果没有访问控制:
访问修饰符可以做到:
这也是面向对象的重要原则之一:
封装(Encapsulation)
| 修饰符 | 访问范围 | 新手理解 |
|---|---|---|
| public | 全世界都能访问 | 完全公开 |
| private | 只有本类能访问 | 绝对私有 |
| protected | 本类 + 子类 | 家族可用 |
| internal | 同一个项目内 | 公司内部 |
这些是C#中最最常用的几个访问修饰符列表,接下来我们会分开讲解这几个关键字
任何地方都可以访问
就像公共公告栏,谁都能看。
public class Person
{
public string Name;
}
使用:
Person p = new Person();
p.Name = "小明";
任何地方都可以访问 Name。
适用于:
只能在当前类内部访问
就像个人隐私,别人看不到。
class Person
{
private int age;
}
外部访问会报错:
Person p = new Person();
p.age = 10; // 无法访问,编译器会报错
因为它是 最安全的访问级别,而且如果你不刻意去写可访问性修饰符的话,类内部的成员默认都是private
因此通常我们会:
这是一种标准设计模式。
本类 + 子类可以访问
就像家族内部(父类、子类)共享信息。
class Animal
{
protected int age;
}
子类可以访问:
class Dog : Animal
{
void Test()
{
age = 5; // 可以访问
}
}
但外部不能访问。
通常用于:
只能在当前项目2内访问
就像公司内部文件,外部看不到。
internal class Helper
{
}
在同一个项目2可以访问,但是在另一个项目中无法访问
可以用一张表快速理解:
| 修饰符 | 本类 | 子类 | 同项目 | 外部 |
|---|---|---|---|---|
| public | ✅ | ✅ | ✅ | ✅ |
| private | ✅ | ❌ | ❌ | ❌ |
| protected | ✅ | ✅ | ❌ | ❌ |
| internal | ✅ | ✅ | ✅ | ❌ |
你可能会问:
不写修饰符会怎样?
答案是分情况:
class Test
{
int number; // 默认 private
}
class MyClass // 默认 internal
{
}
等价于:
internal class MyClass
{
}
在真实项目中通常这样设计:
class Person
{
private int age; // 数据隐藏
public int Age // 提供访问入口
{
get { return age; }
set { age = value; }
}
}
这是最经典的 字段 private + 属性 public模式。
可以用一句话记住:
public 谁都能用
private 只有自己
protected 子类能用
internal 同项目用
应该尽量减少 public,原则是:能 private 就不要 public
访问修饰符 = 控制代码 “谁能访问” 的权限系统