Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在继承的get中使用base或this_C#_Inheritance_This - Fatal编程技术网

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
它会引用相同的值吗?