2017-09-06 18 views
2

我无法理解在继承的get方法中正确使用basethis。我有一个接口IMatchModelC#使用基地或继承获得

public interface IMatchModel 
{ 
    int TypeId { get; } 
    DateTime DataDate { get; set; } 
    string TypeName { get; set; } 
} 

和基础模型类TradeModel

public class TradeModel 
{ 
    public long TradeId { get; set; } 
    public DateTime DataDate { get; set; } 
    public string TradeName { get; set; } 
} 

然后,我有从TradeModel继承并实现IMatchModel类。我目前使用下面的方法:

public class TradeMatchModel : TradeModel, IMatchModel 
{ 
    public int TypeId { get { return 1; } } 
    public string TypeName 
    { 
     get 
     { 
      return base.TradeName; 
     } 

     set 
     { 
      base.TradeName = value; 
     } 
    } 
} 

TradeModel类是对所有的属性进行动作的功能中使用。 IMatchModel用于只需要包含在接口中的属性的函数。该代码正常工作,但我仍然觉得我不太明白,如果最好使用base而不是this。在这种情况下使用base是不正确的?

+1

一个简单的方法来思考这个问题是'base'将执行父类的代码,而'this'将执行代码当前课程。如果您重写任何方法或决定隐藏父类方法(通过'new'-ing它),请记住这一点。 – code4life

回答

2

您需要使用base的唯一时间是当您在重写的虚拟方法内时,您需要调用您当前覆盖的方法的基本实现。所有其他时间,您可以使用this.

另外this.通常不需要,除非在类中的字段或属性与变量或参数的名称之间存在名称冲突。 99%的时间你可以离开this.和做return TradeName;

+0

谢谢你的回答。比方说,我将一个'TradeModel'类型的变量转换为'TradeMatchModel',然后将它传递给一个将'IMatchModel'作为参数的函数。当我访问调用'base'属性的属性时,我访问原始变量的值吗?如果我不使用'base',它会引用相同的值吗? –