我很想知道this和C#中的base object之间的区别。使用它们时的最佳实践是什么?
发布于 2010-09-17 14:54:24
this表示当前类实例,而base表示父类实例。用法示例:
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();
}
}发布于 2010-09-17 14:58:57
这两个关键字非常不同。
this指的是当前实例类(不是“current”)。它只能在非静态方法中使用(因为在静态方法中没有当前实例)。在this上调用方法的方式与在包含相同instance.base的变量上调用该方法的方式相同,这是一个允许继承方法调用的关键字,即,即它从基类型调用指定的方法。它也只能在非静态方法中使用。它通常用在虚方法重写中,但实际上可以用来调用基类型中的任何方法。它与普通的方法调用有很大的不同,因为它绕过了普通的虚方法分派:它直接调用基方法,即使它是虚的。发布于 2010-09-17 14:59:15
达林是对的。举个例子也可能会有所帮助。(我最初发帖的时候还没有一个例子。现在有了。)
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();
}
}上面打印的是"Base says!“紧随其后的是"Derived says!“
https://stackoverflow.com/questions/3733234
复制相似问题