如果我有一个非常简单的课程,例如:
public class Example
{
public int Number { get; set; }
public Example(int numberArg)
{
this.Number = numberArg;
}
}
我有一个像这样的派生类:
public class AnotherExample : Example
{
public int DoubleNumber
{
get
{
return this.Number * 2;
}
}
public AnotherExample(int numberArg) : base(numberArg) {}
}
如果我使用
this.Number
引用AnotherExample
对象基础Number
属性与使用base.Number
引用该属性有什么区别?谢谢!
最佳答案
如果未覆盖Number
,则没有区别,因为this.Number
将在继承链中正确解析。
这也意味着在基类中调用this.Member
(如果在派生类中被覆盖)将再次使用继承链并找到派生的实现。
如果已被覆盖,则使用base
将始终转到该属性的基类版本,而this.Number
首先将转到您的覆盖版本。
如果您打算在构造函数中调用virtual
成员,请注意有关它的一般建议:
Virtual member call in a constructor
这个答案省略了关于成员隐藏的解释,因为OP示例比这更简单。
关于c# - 引用继承的属性/变量时,使用this.X和base.X的行为有何不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21602021/