C#专题之成员查询与函数成员

作者:思多雅[天行健] 发布时间:2009.1.24一、 成员查询 成员查询是根据在一个类型的上下文中一个名称的意义是确定的来进行。成员查询会发生在对一个表达式中的简单名称或成员访问进行求值的时候。 类T 中的名称A 的成员查询按下面步骤进行: *  首先,T 中声明的名为N 的所有可访问成员和T 的基本类型已经被构造。包括override 修饰符的声明被排斥在外。如果没有名为N
摘要由CSDN通过智能技术生成
作者:思多雅[天行健] 发布时间:2009.1.24
一、 成员查询
成员查询是根据在一个类型的上下文中一个名称的意义是确定的来进行。成员查询会发生在对一个表达式中的简单名称或成员访问进行求值的时候。
类T 中的名称A 的成员查询按下面步骤进行:
*  首先,T 中声明的名为N 的所有可访问成员和T 的基本类型已经被构造。包括override 修饰符的声明被排斥在外。如果没有名为N 的成员存在或可访问,那么查询产生无匹配,而下面的步骤就不再进行。
下面,被其它成员隐藏的成员被从集合中除去,对于集合中任何一个成员S.M,使用下面的规则: (这里在类型S 中,成员M 被声明)
*  如果M 是一个常数、域、属性、事件、类型或枚举成员,那么所有在S 的基类中声明的成员都要被从集合中去掉。
   *  如果M 是一个方法,那么S 的一个基本类型中声明的所有非方法成员都要从这个集合中去掉,
      并且S 的基本类型中声明的所有与M 有相同签名的方法都要从这个集合中去掉。
*  最后,把隐含成员去掉后,查询的结果就确定了:
*  如果集合是由单个非方法成员构成,那么这个成员就是查询的结果。
*  另外,如果集合中只包含方法,那么这个方法组就是查询的结果。
*  另外,如果查询是不明确的,就会产生编译时错误 (这个情况只能发生在一个有多个直接基本接口的接口的成员查询中)。
对于不同于接口的类型中的成员查询和严格单继承的接口中的成员查询(继承链中的每个接口没有或只有一个直接基接口),成员查询规则的作用是简单的,派生的成员隐藏了有相同名称或签名的基本成员。这样的单继承查询不会是不明确的。不明确的查询只可能在多继承接口成员查询时发生。
1.1 基类型
出于成员查询的目的,类型T 可以被考虑有下面的基类型:
*  如果T 是对象(object)类型,那么T 没有基类型。
*  如果T 是一个数值类型,那么T 的基类型是类类型对象(object)。
*  如果T 是一个类类型,那么T 的基类型是T 的基类,包括类类型对象(object)。
*  如果T 是一个接口类型,那么T 的基类型是T 的基接口和类类型对象(object)。
*  如果T 是一个数组类型,那么T 的基类型就是类类型System.Array和对象(object)。
*  如果T 是一个代表类型,那么T 的基类型就是类类型System.Delegate和对象(object)。

-------思多雅[天行健]版权所有,首发太平洋论论坛,转载请注明-------

二、函数成员
函数成员是一些包含可执行语句的成员。函数成员总是类型的成员,并且不能是名称空间的成员。C#定义了下面五种函数成员:
*  构造函数
*  方法
*  属性
*  索引
*  用户定义操作符
在函数成员中包含的语句通过函数成员调用来执行。函数成员调用的事件语法是根据不同的函数成员种类来定。然而,所有的函数成员调用都是表达式,它允许参数被传送到函数成员中,并且允许函数成员计算和返回一个结果。
一个函数成员调用的参数列表提供了函数成员实际数值或的对参数引用的变量。
构造函数、方法、索引和操作符的引用,使用重载分析来确定调用哪个候选功能参数集。
一旦在编译时一个详细的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值