欢迎光临
我们一直在努力

C# 五大访问修饰符

一、五大访问修饰符总览

C# 权限从小到大排序:private → protected → internal → protected internal → public

测试类统一字段(所有规则基于以下字段验证):

public class People
{
public int a = 10; // 公共
private int b = 20; // 私有
protected int c = 30; // 受保护
protected internal int d = 30; // 受保护内部
internal int e = 30; // 内部
}


二、逐修饰符权限详解(同项目 + 跨项目)

1. private 私有的(权限最小)

核心规则:仅当前类内部可以访问,其余全部禁止

  • 当前类内部:✅ 可访问

  • 本项目子类:❌ 不可访问

  • 本项目外部实例:❌ 不可访问

  • 跨项目任何场景:❌ 不可访问

2. protected 受保护的

核心规则:只给自己和子类用,外部实例无权访问

  • 当前类内部:✅ 可访问

  • 本项目子类:✅ 可访问

  • 本项目外部实例:❌ 不可访问

  • 跨项目子类:✅ 可访问

  • 跨项目外部实例:❌ 不可访问

3. internal 内部的(项目级权限)

核心规则:仅限当前整个项目内部使用,跨项目彻底失效

  • 当前类内部:✅ 可访问

  • 本项目子类:✅ 可访问

  • 本项目外部实例:✅ 可访问

  • 跨项目子类:❌ 不可访问

  • 跨项目外部实例:❌ 不可访问

4. protected internal 受保护内部(合并权限)

核心规则:取 protected 和 internal 的并集,满足其一即可访问

  • 当前类内部:✅ 可访问

  • 本项目子类:✅ 可访问

  • 本项目外部实例:✅ 可访问

  • 跨项目子类:✅ 可访问(继承权限生效)

  • 跨项目外部实例:❌ 不可访问

5. public 公共的(权限最大)

核心规则:全场景无限制,任何地方都能访问

  • 当前类内部:✅ 可访问

  • 本项目子类:✅ 可访问

  • 本项目外部实例:✅ 可访问

  • 跨项目子类:✅ 可访问

  • 跨项目外部实例:✅ 可访问


三、代码场景验证(对应你的源码)

1. 本项目类内部(People 内部方法 F1)

所有修饰符成员 全部可以访问

public void F1()
{
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.WriteLine(e);
}

2. 本项目子类(Man 类)

唯独 private 不可访问

public void F2()
{
Console.WriteLine(a); //public ✅
// Console.WriteLine(b); //private ❌
Console.WriteLine(c); //protected ✅
Console.WriteLine(d); //protected internal ✅
Console.WriteLine(e); //internal ✅
}

3. 本项目外部实例(Main 方法实例调用)

private、protected 禁止实例访问

People p = new People();
Console.WriteLine(p.a); //public ✅
//Console.WriteLine(p.b) //private ❌
//Console.WriteLine(p.c) //protected ❌
Console.WriteLine(p.d); //protected internal ✅
Console.WriteLine(p.e); //internal ✅

4. 跨项目场景(子类 Woman + 外部实例)

跨项目彻底截断 internal,仅保留 public、protected、protected internal 的子类权限

// 跨项目子类
public class Woman : People
{
public void F3()
{
Console.WriteLine(a); //public ✅
Console.WriteLine(c); //protected ✅
Console.WriteLine(d); //protected internal ✅
// Console.WriteLine(e); //internal 跨项目 ❌
}
}

// 跨项目实例调用
People p = new People();
Console.WriteLine(p.a); //public ✅
//其余所有成员 全部不可访问


四、五大修饰符终极汇总表(背诵神器)

修饰符

本类内部

本项目子类

本项目实例

跨项目子类

跨项目实例

private

protected

internal

protected internal

public


五、满分必考口诀

  • private私有最自闭,只在本类能看见

  • protected护子类,实例外部看不见

  • internal锁项目,跨项目就作废

  • protected internal双权限,子类/本项目随便用

  • public全开放,走遍项目都能用

赞(0)
未经允许不得转载:171主机测评 » C# 五大访问修饰符
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址