可以限制类和结构,以便只有声明它们的程序或命名空间才能使用它们。可以限制类成员,以便只有派生类才能使用它们,或者限制类成员,以便只有当前命名空间或程序中的类才能使用它们。访问修饰符是添加到类、结构或成员声明的关键字,用以指定这些限制。这些关键字包括 public、private、protected 和 internal。例如:
C# | 复制代码 |
---|
public class Bicycle
{
public void Pedal() { }
}
|
类和结构的可访问性
没有嵌套在其他类或结构中的类和结构可以是公共的,也可以是内部的。声明为公共的类型可由任何其他类型访问。声明为内部的类型只能由同一程序集中的类型访问。类和结构默认声明为内部的,除非向类定义添加了关键字 public,如前面的示例所示。类或结构定义可以添加 internal 关键字,使其访问级别成为显式的。访问修饰符不影响类或结构自身 -- 它始终能够访问自身及其所有成员。
类成员和结构成员的可访问性
可以使用五种访问类型之一来声明类成员或结构成员。与类和结构自身一样,它们也可以是公共的或内部的。可以使用 protected 关键字将类成员声明为受保护的,意味着只有使用该类作为基类的派生类型才能访问该成员。通过组合 protected 和 internal 关键字,可以将类成员标记为受保护的内部成员 -- 只有派生类型或同一程序集中的类型才能访问该成员。最后,可以使用 private 关键字将类成员或结构成员声明为私有的,指示只有声明该成员的类或结构才能访问该成员。
若要设置类成员或结构成员的访问级别,请向该成员声明添加适当的关键字。示例:
C# | 复制代码 |
---|
// public class:
public class Tricycle
{
// protected method:
protected void Pedal() { }
// private field:
private int m_wheels = 3;
// protected internal property:
protected internal int Wheels
{
get { return m_wheels; }
}
}
|
其他类型
与类一样,接口也可声明为公共类型或内部类型。与类不同,接口默认具有内部访问级别。接口成员始终是公共的,不能应用任何访问修饰符。
命名空间和枚举成员始终是公共的,不能应用任何访问修饰符。
委托默认具有内部访问级别。
默认情况下,在命名空间中或在编译单元顶部(例如,不在命名空间、类或结构中)声明的任何类型都是内部的,但是可以成为公共的。
C# 语言规范
请参见