C#中运算符优先级及访问限定符

一、运算符优先级

运算符类别

运算符

基本

x.y f(x) a[x] x++ x-- new

typeof checked unchecked ->

一元

+ - ! ~ ++x --x (T)x True False & sizeof

乘法

* / %

加法

+ -

移位

<< >>

关系和类型检测

< > <= >= is as

相等

== !=

逻辑“与”

&

逻辑“异或”

^

逻辑“或”

|

条件“与”

&&

条件“或”

||

条件运算

?:

赋值

= += -= *= /= %= &= |=

^= <<= >>= ??

Lambda

=>


一、访问限定符

成员的“已声明可访问性”可以是下列之一:

  • Public,选择它的方法是在成员声明中包括 public 修饰符。public 的直观含义是“访问不受限制”。
  • Protected,选择它的方法是在成员声明中包括 protected 修饰符。protected 的直观含义是“访问范围限定于它所属的类或从该类派生的类型”。
  • Internal,选择它的方法是在成员声明中包括 internal 修饰符。internal 的直观含义是“访问范围限定于此程序”。
  • Protected internal(意为受保护或内部的),选择它的方法是在成员声明中包括 protectedinternal 修饰符。protected internal 的直观含义是“访问范围限定于此程序或那些由它所属的类派生的类型”。
  • Private,选择它的方法是在成员声明中包括 private 修饰符。private 的直观含义是“访问范围限定于它所属的类型”。

声明一个成员时所能选择的已声明可访问性的类型,依赖于该成员声明出现处的上下文。此外,当成员声明不包含任何访问修饰符时,声明发生处的上下文会为该成员选择一个默认的已声明可访问性。

  • 命名空间隐式地具有 public 已声明可访问性。在命名空间声明中不允许使用访问修饰符。
  • 编译单元或命名空间中声明的类型可以具有 publicinternal 已声明可访问性,默认的已声明可访问性为 internal
  • 类成员可具有五种已声明可访问性中的任何一种,默认为 private 已声明可访问性。(请注意,声明为类成员的类型可具有五种已声明可访问性中的任何一种,而声明为命名空间成员的类型只能具有 publicinternal 已声明可访问性。)
  • 结构成员可以具有 publicinternalprivate 已声明可访问性并默认为 private 已声明可访问性,这是因为结构是隐式地密封的。结构的成员若是在此结构中声明的(也就是说,不是由该结构从它的基类中继承的)不能具有 protectedprotected internal 已声明可访问性。(请注意,声明为结构成员的类型可具有 publicinternalprivate 已声明可访问性,而声明为命名空间成员的类型只能具有 publicinternal 已声明可访问性。)
  • 接口成员隐式地具有 public 已声明可访问性。在接口成员声明中不允许使用访问修饰符。
  • 枚举成员隐式地具有 public 已声明可访问性。在枚举成员声明中不允许使用访问修饰符。

public, internal, protected internal, private表明类实例方法的可访问性.

public, protected, protected internal, private表明继承时父类方法的可访问性.

posted @ 2014-05-24 13:19  zzg168  阅读(356)  评论(0)    收藏  举报