访问修饰符(C#)
访问修饰符(C#)
访问修饰符,英文:Access Modifiers
所有类型和类型成员都具有可访问性级别。 该级别可以控制是否可以从你的程序集或其他程序集中的其他代码中使用它们。 程序集是通过在单个编译中编译一个或多个 .cs 文件而创建的 .dll 或 .exe。 可以使用以下访问修饰符在进行声明时指定类型或成员的可访问性:
- public (公共):任何程序集中的代码都可以访问此类型或成员。 包含类型的可访问性级别控制该类型的公共成员的可访问性级别。
- private(专用):只有在同一 class 或 struct 中声明的代码才能访问此成员。
- protected(受保护):只有同一 class 或派生的 class 中的代码才能访问此类型或成员。
- internal(内部):只有同一程序集中的代码才能访问此类型或成员。
- protected internal(受保护的内部):只有同一程序集中的代码或另一个程序集的派生类中的代码才能访问此类型或成员。
- private protected(专用受保护):只有同一程序集和同一类/派生类中的代码才能访问该类型或成员。
- file(文件):只有同一文件中的代码可以访问类型或成员。
类型上的 record 修饰符会导致编译器合成额外的成员。 record 修饰符不会影响 record class 或 record struct 的默认可访问性。
摘要
以下示例演示了如何在类型和成员上指定访问修饰符:
public class Bicycle
{
public void Pedal() { }
}
并非所有访问修饰符对所有上下文中的所有类型或成员都有效。在某些情况下,包含类型的可访问性限制了其成员的可访问权限。
关于partial class:
partial class 或 partial member 的多个声明必须具有相同的可访问性。如果partial class 或 member 的一个声明不包含访问修饰符,则其他声明不能声明访问修饰符。如果partial class 或 member的多个声明声明了不同的可访问性,编译器将生成错误。
类和结构可访问性
直接在命名空间中声明的类和结构(不嵌套在其他类或结构中)可以具有公共、内部或文件访问权限。如果未指定访问修饰符,则默认为internal。
结构成员,包括嵌套类和结构,可以声明为公共、内部或私有。类成员,包括嵌套类和结构体,可以是公共的、受保护的内部的、受防护的、内部的、私有的、保护的或私有的。默认情况下,类和结构成员(包括嵌套类和结构)具有私有访问权限。
派生类的可访问性不能超过其基类型。你不能声明从内部类a派生的公共类B。如果允许,它将具有使a公开的效果,因为a的所有受保护或内部成员都可以从派生类访问。
参考:Access Modifiers (C# Programming Guide)