base和this在C#中被归于访问关键字(实现继承机制的访问操作,来满足对对象成员的访问)
- base:
1.调用基类上已被其他方法重写的方法(只能访问共有或者受保护盾,私有不可访问)
2.指定创建派生类实例时应调用的基类构造函数 - this:
1.限定被相似的名称隐藏的成员
2.将对象作为参数传递到其他方法(访问的是本类的常量,字段,属性,方法成员,且无论任何访问级别。因为,THIS仅仅局限于对象内部,因为,静态成员不是对象的一部分,所以不能在静态方法中引用this)
3.声明索引器 - 多层继承中
1.有重载的情况:base只能继承直接(最新)继承的类的成员
2.没有重载的情况:base可以指向任何上级父类的共有或者受保护的方法。
总结
- 尽量少用或不用base和this(除了子类的名称冲突和在一个构造函数中调用其他的构造函数之外)
- 静态成员中都不能使用base和this,因为base和this都是类的对象,静态成员只能由类来访问而不是对象
- 不可同时使用base和this在构造函数上
- base用于在子类中访问重写的基类成员;而this用于访问本类的成员