'base'和'this'关键字之间的区别

时间:2013-06-29 06:17:02

标签: c# .net

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

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

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

有人可以请我解释上述两个问题吗

2 个答案:

答案 0 :(得分:5)

这很简单:

this引用当前对象(EG,如果方法类似于void mymethod(int myvar),并且类中定义了myvar,则可以使用myvar来引用参数,this.myvar引用类中的那个。)

base指的是基类(您的类派生自的类)。 (例如,如果您覆盖方法Update,则在结束时,您可以调用base.Update();来调用原始方法。)

答案 1 :(得分:0)

让我们B扩展一个类,所以,B继承了A:

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