继承类里面能用this访问基类的方法吗?

nosuchtracter 2009-04-07 09:50:50

public abstract class TemplatedWebControl : WebControl, INamingContainer {
/// <exclude/>
public override ControlCollection Controls {
get {
this.EnsureChildControls();
return base.Controls;
}
}
}

EnsureChildControls()方法好像是Control类里面的吧,WebControl继承了Control。
在这个方法里面。base和this有啥区别吗?
为什么不能用base.EnsureChildControls()??
是不是因为override的关系?
...全文
194 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomiji 2009-04-07
  • 打赏
  • 举报
回复
能明白base是用于调用基类上已被其他方法重写的方法。
而this只能调用已经被重写或者是未重写的方法就能明白原因了
wujinjian2008n 2009-04-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 insus 的回复:]
继承下访问基类,请用base.
this是本身.
[/Quote]
tomiji 2009-04-07
  • 打赏
  • 举报
回复

public abstract class TemplatedWebControl : WebControl, INamingContainer {
/// <exclude/>
public override ControlCollection Controls {
get {
this.EnsureChildControls();
return base.Controls;
}
}
}

TemplatedWebControl类中的Controls属性是对WebControl中的Controls属性的重写。(override)
return base.Controls代表返回重写前的Controls属性的get值。
base 关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。
而使用this,若该方法在子类中已经被重写则调用的是重写后的方法。
nosuchtracter 2009-04-07
  • 打赏
  • 举报
回复
this可以使用继承而来的公有和保护成员。
那这里base是不是也可以使用呢?
nosuchtracter 2009-04-07
  • 打赏
  • 举报
回复
LS几位,你们都有点偏了。你们答复的大部分都是this 和base的区别。
我现在是想请教下,为什么我发的这段代码能用this
这段代码应该没错吧?
是在community server 2.1里面的
RHCL 2009-04-07
  • 打赏
  • 举报
回复
http://www.cnblogs.com/dragonlhf/archive/2007/11/19/963838.html
BossFriday 2009-04-07
  • 打赏
  • 举报
回复
用base.
关于继承,还有一点要注意,基类的构造函数是不能被继承下来.所以有时候你会看到类似这样的代码:
public className()
: base()
{

}
wang355 2009-04-07
  • 打赏
  • 举报
回复
1,this访问的是子类本身的方法或属性,或者以子类的身份访问子类继承父类的方法或属性,而base是在子类中调用父类的方法或成员变量。
2,this是可以再子类的任何位置来调用的,而base是只能在子类的方法体中来调用。
3,一般调用父类的成员使用base。
nosuchtracter 2009-04-07
  • 打赏
  • 举报
回复
1楼,这段代码是community server里面的。
查看EnsureChildControls()方法是跳转到Control里面去的。
为什么这里能用this?
在TemplatedWebControl类里面没有EnsureChildControls()方法
jdbcodbc 2009-04-07
  • 打赏
  • 举报
回复
同意楼上的,调用父类的话一般都是用base的
insus 2009-04-07
  • 打赏
  • 举报
回复
继承下访问基类,请用base.
this是本身.

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧