C#中的访问修饰符用于控制类型成员(如字段、属性、方法等)的访问级别。以下是C#中常用的访问修饰符:
-
public :公共访问级别,没有任何访问限制。在任何其他类或程序集中都可以访问标记为
public
的成员。 -
private:私有访问级别,只能在定义它们的类内部访问。这是默认访问级别,如果没有指定访问修饰符,则成员被认为是私有的。
-
protected:受保护访问级别,允许在定义成员的类内部以及派生自该类的子类中访问。
-
internal:内部访问级别,只能在相同程序集内部访问。对于程序集外部的代码来说,这些成员是不可见的。
-
protected internal:受保护的内部访问级别,允许在同一程序集中的任何类或派生自该类的子类中访问。
-
private protected:私有受保护访问级别,只允许在定义成员的类的同一程序集内的派生类中访问。
下面是包含这些访问修饰符的示例代码:
csharp
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
方法展示了从类外部可以访问哪些字段。