如果您在从基类继承并且想要在该基类上调用受保护或公共方法的类中编写代码,那么调用base.MyProtectedMethod()
或者调用this.MyProtectedMethod()
或者最好是对(或对或错) public class MyBase()
{
....
protected void DoStuff()
{
// some stuff
}
}
public class MyChildClass() : MyBase
{
public MyNewMethod()
{
// do some work
this.DoStuff();
base.DoStuff();
}
}
(在c#中)?有什么区别?两者似乎都有效。
例如:
MyNewMethod
在{{1}}中这两次是同一回事吗?
答案 0 :(得分:10)
这与MyNewMethod
完全相同。
我只建议在实际需要时使用base.
,即:当你需要在重写方法中显式调用方法的基类版本时。
答案 1 :(得分:2)
答案 2 :(得分:1)
只是为了说明里德和凯文的答案:
namespace ConsoleApplication1
{
class A
{
public virtual void Speak()
{
Hello();
}
virtual protected void Hello()
{
Console.WriteLine("Hello from A");
}
}
class B : A
{
public override void Speak()
{
base.Hello(); //Hello from A
this.Hello(); //Hello from B
}
override protected void Hello()
{
Console.WriteLine("Hello from B");
}
}
class Program
{
static void Main(string[] args)
{
B b = new B();
b.Speak();
}
}
}