C#在继承的get中使用base或this
在继承的C#在继承的get中使用base或this,c#,inheritance,this,C#,Inheritance,This,在继承的get方法中,我很难理解base和this的正确用法。我有一个接口IMatchModel: public interface IMatchModel { int TypeId { get; } DateTime DataDate { get; set; } string TypeName { get; set; } } public class TradeModel { public long TradeId { get; set; } publ
get
方法中,我很难理解base
和this
的正确用法。我有一个接口IMatchModel
:
public interface IMatchModel
{
int TypeId { get; }
DateTime DataDate { get; set; }
string TypeName { get; set; }
}
public class TradeModel
{
public long TradeId { get; set; }
public DateTime DataDate { get; set; }
public string TradeName { get; set; }
}
和一个基本模型类TradeModel
:
public interface IMatchModel
{
int TypeId { get; }
DateTime DataDate { get; set; }
string TypeName { get; set; }
}
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
是否不正确?唯一需要使用base
的时间是在被重写的虚拟方法中,并且需要调用当前被重写的方法的基本实现。所有其他时间,您都可以使用此。
另外,除非类中的字段或属性与变量或参数的名称之间存在名称冲突,否则通常不需要使用
。99%的情况下,您可以省去这个。
并返回商标名
思考这个问题的一个简单方法是,base
将执行父类上的代码,而this
将执行当前类上的代码。如果覆盖任何方法或决定隐藏父类方法(通过new
-ing),请记住这一点。谢谢您的回答。假设我将TradeModel
类型的变量强制转换为TradeMatchModel
,然后将其传递给以IMatchModel
为参数的函数。当我访问调用base
属性的属性时,我是否访问原始变量的值?如果我没有使用base
它会引用相同的值吗?