3

有人告诉我,可以使用basethis关键字在派生类中访问基类中的受保护变量。我现在完全糊涂了,因为,this 关键字指的是当前类(派生类)。

public class A
{
  protected int i;
}
public class B :A
{
  void Display()
  {
    this.i=10;
    //  (or)
    base.i=10;
  }
}

有技术上的区别吗?首先,今天我想知道为什么我不能在Display()方法内部创建 A 的对象并通过该对象访问变量 i ,因为受保护访问的定义表明,它可以在任何派生类中访问。伙计们,我见过一些线程,但是他们说的是,我们无法创建对象并访问受保护的成员。我觉得,这与定义完全相反。

有人可以解释一下我上面的两个问题吗

4

2 回答 2

5

这很简单:

this引用当前对象(例如,如果一个方法是 like void mymethod(int myvar),并且类已经myvar在其中定义,您可以使用myvar引用参数,并this.myvar引用类中的那个。)

base指基类(您的类派生自的类)。(例如,如果您要覆盖一个方法Update,在它的最后,您可以调用base.Update();来调用原始方法。)

于 2013-06-29T06:23:15.413 回答
0

让我们 B 扩展 A 类,所以,B 继承了 A 的 i:

public class A {
    protected int i;
}
public class B : A {
    void Display() {
        i = 10; // this.i
    }
}
于 2013-06-29T06:22:21.803 回答