C# 访问修饰符

原文链接:https://www.cnblogs.com/ysmc/p/18802674

介绍

在C#中,访问修饰符(Access Modifiers)用于定义类型成员(如字段、属性、方法等)或类型本身(如类、结构体等)的可访问性。访问修饰符确定了其他类和程序集对这些成员或类型的访问级别。以下是C#中常见的访问修饰符:

public

  • 定义:公共访问级别,没有任何访问限制。
  • 应用:可以被任何其他代码访问,无论是在同一程序集还是在引用了该程序集的其他程序集中。

private

  • 定义:私有访问级别,只能在定义它们的类型内部访问。
  • 应用:通常用于隐藏类型的实现细节,只能被同一个类或结构体的代码访问。

protected

  • 定义:受保护访问级别,只能在定义它们的类或结构体及其派生类中访问。
  • 应用:适用于那些只想在类的继承层次结构中暴露的成员。

internal

  • 定义:内部访问级别,只能在同一个程序集内部访问。
  • 应用:用于定义对其他程序集隐藏但对同一程序集中的其他类或成员可见的类型或成员。

protected internal

  • 定义:受保护的内部访问级别,可以由同一程序集中的任何代码访问,或者由派生自该类的其他程序集中的代码访问。
  • 应用:这是一个组合访问修饰符,提供了一种在程序集内部或通过继承在其他程序集中访问成员的方式。

private protected

  • 定义:私有受保护访问级别,只能在其声明所在的类或该类的派生类中访问,并且只能在同一个程序集内部。
  • 应用:这是C# 7.2中引入的较新的访问修饰符,它进一步限制了受保护成员的访问范围。

无修饰符(默认访问级别)

  • 类的默认访问级别:如果没有指定访问修饰符,则类默认为 internal
  • 类成员的默认访问级别:如果没有指定访问修饰符,则类成员(包括字段、方法等)默认为 private

示例

 1 public class MyClass
 2 {
 3     private int privateField; // 只能在MyClass内部访问
 4     protected int protectedField; // 可以在MyClass及其派生类中访问
 5     internal int internalField; // 可以在同一程序集中的任何代码访问
 6     protected internal int protectedInternalField; // 可以在同一程序集中的任何代码或派生类中访问
 7     private protected int privateProtectedField; // 只能在MyClass及其派生类中访问,并且只能在同一程序集中
 8 
 9     public void MyMethod()
10     {
11         // 方法体,可以访问上述所有字段
12     }
13 }

当设计类和成员时,应该遵循最小权限原则,即只提供必要的最小访问级别。这有助于提高代码的封装性和安全性。

posted @ 2025-03-31 18:12  一事冇诚  阅读(5974)  评论(0)    收藏  举报