Dar*_*rov 31
public class Parent
{
public virtual void Foo()
{
}
}
public class Child : Parent
{
// call constructor in the current type
public Child() : this("abc")
{
}
public Child(string id)
{
}
public override void Foo()
{
// call parent method
base.Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*mwi 11
这两个关键字非常不同.
this指当前实例(不是"当前类").它只能用于非静态方法(因为在静态方法中没有当前实例).调用方法this将以与在包含相同实例的变量上调用方法相同的方式调用方法.
base是一个允许继承方法调用的关键字,即它从基类型调用指定的方法.它也只能用于非静态方法.它通常用于虚方法覆盖,但实际上可用于调用基类型中的任何方法.它与普通的方法调用非常不同,因为它绕过了正常的虚方法调度:它直接调用基本方法,即使它是虚方法.
达林是对的.一个例子也可能有所帮助.(当我最初发布时,没有一个例子.现在有.)
class Base {
protected virtual void SayHi() {
Console.WriteLine("Base says hi!");
}
}
class Derived : Base {
protected override void SayHi() {
Console.WriteLine("Derived says hi!");
}
public void DoIt() {
base.SayHi();
this.SayHi();
}
}
Run Code Online (Sandbox Code Playgroud)
以上打印"Base说嗨!" 其次是"Derived say hi!"
| 归档时间: |
|
| 查看次数: |
17144 次 |
| 最近记录: |