我被告知,可以使用base
或this
关键字在派生类中访问基类中的受保护变量。我现在完全糊涂了,因为this
关键字指的是当前类(派生类)。
public class A
{
protected int i;
}
public class B :A
{
void Display()
{
this.i=10;
// (or)
base.i=10;
}
}
有任何技术差异吗?首先,今天我很想知道为什么我不能创建一个内部Display()
方法的对象并通过该对象访问变量i,因为受保护访问的定义说,它可以在任何派生中访问类。伙计们,我看过一些线程,但他们说的是,我们无法创建对象并访问受保护的成员。我觉得,这与定义相反。
有人可以请我解释上述两个问题吗
答案 0 :(得分:5)
这很简单:
this
引用当前对象(EG,如果方法类似于void mymethod(int myvar)
,并且类中定义了myvar
,则可以使用myvar
来引用参数,this.myvar
引用类中的那个。)
base
指的是基类(您的类派生自的类)。 (例如,如果您覆盖方法Update
,则在结束时,您可以调用base.Update();
来调用原始方法。)
答案 1 :(得分:0)
让我们B扩展一个类,所以,B继承了A:
的ipublic class A {
protected int i;
}
public class B : A {
void Display() {
i = 10; // this.i
}
}