访问修饰符

原文地址:http://www.dingos.cn/index.php?topic=863.0

 

【访问修饰符】
可以限制类和结构,以便只有声明它们的程序或命名空间才能使用它们。可以限制类成员,以便只有派生类才能使用它们,或者限制类成员,以便只有当前命名空间或程序中的类才能使用它们。访问修饰符是添加到类、结构或成员声明的关键字,用以指定这些限制。

这些关键字包括

  • public
    是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制
  • private
    一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的
    同一体中的嵌套类型也可以访问那些私有成员。在定义私有成员的类或结构外引用它会导致编译时错误。
  • protected
    是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。
    只有在通过派生类类型发生访问时,基类的受保护成员在派生类中才是可访问的。
  • internal
    是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。


使用这些访问修饰符可指定下列五个可访问性级别:

  • public:访问不受限制。
  • protected:访问仅限于包含类或从包含类派生的类型。
  • Internal:访问仅限于当前程序集。
  • protected internal:访问仅限于当前程序集或从包含类派生的类型。
  • private:访问仅限于包含类型。

 

【可访问性级别】
一个成员或类型只能有一个访问修饰符,但使用 protected internal 组合时除外。
命名空间上不允许使用访问修饰符。命名空间没有访问限制。
根据出现成员声明的上下文,只允许某些声明的可访问性。如果在成员声明中未指定访问修饰符,则使用默认的可访问性。
不嵌套在其他类型中的顶级类型的可访问性只能是 internal 或 public。这些类型的默认可访问性是 internal。
嵌套类型是其他类型的成员,它们可以具有下表所示的声明的可访问性。

 

属于
默认的成员可访问性
该成员允许的声明的可访问性
enumpublic
classprivatepublic
protected
internal
private
protected internal
interfacepublic
structprivatepublic
internal
private

【类和结构的可访问性】
没有嵌套在其他类或结构中的类和结构可以是公共的,也可以是内部的。声明为公共的类型可由任何其他类型访问。声明为内部的类型只能由同一程序集中的类型访问。默认情况下,类和结构声明为内部的,除非向类定义添加了关键字 public,如前面的示例所示。类或结构定义可以添加 internal 关键字,使其访问级别成为显式的。访问修饰符不影响类或结构自身;它始终能够访问自身及其所有成员。

 

【类成员和结构成员的可访问性】
可以使用五种访问类型之一来声明类成员或结构成员。就像类和结构自身一样,它们也可以是公共的或内部的。如果使用 protected 关键字将类成员声明为受保护的,则只有使用该类作为基类的派生类型才能访问该成员。通过组合 protected 和 internal 关键字,可以将类成员标记为 protected internal;只有派生类型或同一程序集中的类型才能访问该成员。
最后,可以使用 private 关键字将类成员或结构成员声明为私有的,指示只有声明该成员的类或结构才能访问该成员。

注意:protected internal 可访问性的意思是受保护“或”内部,而不是受保护“和”内部。换句话说,可以从同一程序集内的任何类(包括派生类)中访问 protected internal 成员。若要限制为只有同一程序集内的派生类可以访问,请将类本身声明为内部,并将其成员声明为受保护。

 

【其他类型】
接口也声明为公共类型或内部类型。接口默认具有内部访问级别。接口成员始终是公共的,不能应用任何访问修饰符。
命名空间和枚举成员始终是公共的,不能应用任何访问修饰符。
默认情况下,委托默认具有内部访问级别。
默认情况下,在命名空间中或在编译单元顶部声明的任何类型都是内部的,但是可以成为公共的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值