这与基地的区别

Abh*_*hek 16 c# this

我很想知道thisbase对象之间的区别C#.使用它们时的最佳做法是什么?

Dar*_*rov 31

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();
    }
}
Run Code Online (Sandbox Code Playgroud)


Tim*_*mwi 11

这两个关键字非常不同.

  • this当前实例(不是"当前类").它只能用于非静态方法(因为在静态方法中没有当前实例).调用方法this将以与在包含相同实例的变量上调用方法相同的方式调用方法.

  • base是一个允许继承方法调用的关键字,即它从基类型调用指定的方法.它也只能用于非静态方法.它通常用于虚方法覆盖,但实际上可用于调用基类型中的任何方法.它与普通的方法调用非常不同,因为它绕过了正常的虚方法调度:它直接调用基本方法,即使它是虚方法.


Jos*_*osh 9

达林是对的.一个例子也可能有所帮助.(当我最初发布时,没有一个例子.现在有.)

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!"