可访问性级别(C# 参考)
http://msdn.microsoft.com/zh-cn/library/ba0a1yw2(v=VS.80).aspx
使用访问修饰符 public、protected、internal 或 private 可以为成员指定以下声明的可访问性之一。
声明的可访问性
含义
public
访问不受限制。
protected
访问仅限于包含类或从包含类派生的类型。
internal
访问仅限于当前程序集。
protected internal
访问仅限于从包含类派生的当前程序集或类型。
private
访问仅限于包含类型。
一个成员或类型只能有一个访问修饰符,使用 protected internal 组合时除外。
命名空间上不允许使用访问修饰符。命名空间没有访问限制。
根据发生成员声明的上下文,只允许某些声明的可访问性。如果在成员声明中未指定访问修饰符,则使用默认的可访问性。
不嵌套在其他类型中的顶级类型的可访问性只能是 internal 或 public。这些类型的默认可访问性是 internal。
嵌套类型是其他类型的成员,它们可以具有下表所示的声明的可访问性。
属于
默认的成员可访问性
该成员允许的声明的可访问性
enum
public
无
class
private
public、protected、internal、private、protected internal
interface
public
无
struct
private
public、internal、private
嵌套类型的可访问性取决于它的可访问域,该域是由已声明的成员可访问性和直接包含类型的可访问域这二者共同确定的。但是,嵌套类型的可访问域不能超出包含它的类型的可访问域。
Private
private 关键字是一个成员访问修饰符。
http://msdn.microsoft.com/zh-cn/library/st6sy9xe(v=VS.80).aspx
私有访问是允许的最低访问级别,私有成员只有在声明它们的类和结构体中才是可访问的。
如下例所示:
class Employee { private int i; double d; // private access by default }
同一体中的嵌套类型也可以访问那些私有成员。
在定义私有成员的类或结构外引用它会导致编译时错误。
Protected
protected 关键字是一个成员访问修饰符。
http://msdn.microsoft.com/zh-cn/library/bcd5672a(v=VS.80).aspx
受保护成员在它的类中可访问并且可由派生类访问,仅当访问通过派生类类型发生时,基类的受保护成员在派生类中才是可访问的。
例如,请看以下代码段:
// protected_keyword.cs using System; class A { protected int x = 123; } class B : A { static void Main() // 在继承类方法中使用父类的protected成员 { A a = new A(); B b = new B(); // Error CS1540, because x can only be accessed by // classes derived from A. // a.x = 10; // OK, because this class derives from A. b.x = 10; } }
语句 a.x =10 将生成错误,因为 A 不是从 B 派生的。
结构成员无法受保护,因为无法继承结构。
Internal
internal 关键字是类型和类型成员的访问修饰符。
只有在同一程序集的文件中,内部类型或成员才是可访问的。
如下例所示:
public class BaseClass { // Only accessible within the same assembly internal static int x = 0; }
有关 internal 与其他访问修饰符的比较,请参见可访问性级别和访问修饰符(C# 编程指南)。