-
大彩串口屏各组态控件的详细介绍-成员查找
资源介绍
7.4 成员查找
成员查找成员查找是确定类型上下文中的名称含义的过程。成员查找可以作为表达式中计算 simple-
name(第 7.6.2 节)或 member-access(第 7.6.4 节)的过程的一部分进行。如果 simple-name 或 member-
access 以 invocation-expression(第 7.6.5.1 节)的 primary-expression 形式出现,则称调用该成员。
如果成员是方法或事件,或者如果成员是委托类型(第 15 章)或 dynamic 类型(第 4.7 节)的常量、
字段或属性,则称该成员是可以调用的。
成员查找不仅考虑成员的名称,而且考虑该成员具有的类型形参的数目以及该成员是否可访问。对成员
查找来说,泛型方法和嵌套泛型类型具有的类型形参数目就是在它们各自的声明中所指定的数目,其他
所有成员则具有零个类型形参。
类型 T 中的具有 K 个类型形参的名称 N 的成员查找过程如下:
首先确定名为 N 的可访问的成员的集:
o 如果 T 是类型形参,则该集是被指定为 T 的主要约束或次要约束(第 10.1.5 节)的每个类型中
名为 N 的可访问成员集与 object 中名为 N 的可访问成员集的并集。
o 否则,该集由 T 中所有名为 N 的可访问(第 3.5 节)成员(包括继承的成员)和 object 中名为
N 的可访问成员构成。如果 T 为构造类型,则按第 10.3.2 节中所述通过替换类型实参来获取成员
集。包含 override 修饰符的成员不包括在此集中。
下一步,如果 K 为零,则移除声明中包含类型形参的所有嵌套类型。如果 K 不为零,则移除所有具
有不同数目的类型形参的成员。注意,当 K 为零时,将不会移除具有类型形参的方法,因为类型推
断过程(第 7.5.2 节)也许能够推断出类型实参。
接着,如果调用该成员,则从该集中移除所有不可调用的成员。
然后,从该集中移除被其他成员隐藏的成员。对于该集中的每个成员 S.M(其中 S 是声明了成员 M
的类型),应用下面的规则:
o 如果 M 是一个常量、字段、属性、事件或枚举成员,则从该集中移除在 S 的基类型中声明的所
有成员。
o 如果 M 是一个类型声明,则从该集中移除在 S 的基类型中声明的所有非类型,并从该集中移除
与在 S 的基类型中声明的 M 具有相同数目的类型形参的所有类型声明。
o 如果 M 是方法,则从该集移除在 S 的基类型中声明的所有非方法成员。
然后,从该集中移除被类成员隐藏的接口成员。仅当 T 为类型形参,并且 T 同时具有除 object 以
外的有效基类和非空有效接口集(第 10.1.5 节)时,此步骤才会产生效果。对于该集中的每个成员
S.M(其中 S 是声明了成员 M 的类型),如果 S 是除 object 以外的类声明,则应用下面的规则:
o 如果 M 是一个常量、字段、属性、事件、枚举成员或类型声明,则从该集中移除在接口声明中
声明的所有成员。
o 如果 M 是一个方法,则从该集中移除在接口声明中声明的所有非方法成员,并从该集中移除与
在接口声明中声明的 M 具有相同签名的所有方法。
- 上一篇: SystemObject方法-C#入门经典教程
- 下一篇: 装箱与拆箱-C#入门经典教程