C#中的访问修饰符用于控制类型成员(如字段、属性、方法等)的访问级别。以下是C#中常用的访问修饰符:
-
public:公共访问级别,没有任何访问限制。在任何其他类或程序集中都可以访问标记为
public
的成员。 -
private:私有访问级别,只能在定义它们的类内部访问。这是默认访问级别,如果没有指定访问修饰符,则成员被认为是私有的。
-
protected:受保护访问级别,允许在定义成员的类内部以及派生自该类的子类中访问。
-
internal:内部访问级别,只能在相同程序集内部访问。对于程序集外部的代码来说,这些成员是不可见的。
-
protected internal:受保护的内部访问级别,允许在同一程序集中的任何类或派生自该类的子类中访问。
-
private protected:私有受保护访问级别,只允许在定义成员的类的同一程序集内的派生类中访问。
下面是包含这些访问修饰符的示例代码:
using System;public class MyClass
{public int PublicField; // 公共字段private int PrivateField; // 私有字段protected int ProtectedField; // 受保护字段internal int InternalField; // 内部字段protected internal int ProtectedInternalField; // 受保护的内部字段private protected int PrivateProtectedField; // 私有受保护字段public void MyMethod(){// 这里可以访问所有上述字段}
}public class DerivedClass : MyClass
{public void AnotherMethod(){// 这里可以访问 PublicField, ProtectedField, ProtectedInternalField 和 PrivateProtectedField// 无法访问 PrivateField 和 InternalField(除非这两个类在同一个程序集中)}
}class Program
{static void Main(){MyClass myClass = new MyClass();// 可以访问 myClass.PublicField 和 myClass.InternalField// 无法访问 PrivateField, ProtectedField, ProtectedInternalField 和 PrivateProtectedField}
}
在这个示例中,MyClass
类中包含了各种访问修饰符的字段,以及一个公共方法 MyMethod
。DerivedClass
类继承自 MyClass
,它可以访问部分但不是全部的字段。Program
类的 Main
方法展示了从类外部可以访问哪些字段。