属性在派生类中为空,但在基类中不为空

本文关键字:基类 属性 派生 | 更新日期: 2023-09-27 18:04:48

我有这样一个简单的类:

public class MyFileInfo
{
    private string _file;
    private int _bytesSent;
    public MyFileInfo(string file)
    {
    }
    public string File
    {
        get { return _file; }
        set { _file = value; }
    }
    public int BytesSent
    {
        get { return _bytesSent; }
        set { _bytesSent= value; }
    }
}

此外,下面是派生类:

public class MyFile : MyFileInfo
{
    public MyFile(MyFileInfo myFileInfo)
    {
    }
    public DoWork()
    {
        // File is null 
    }
}

派生类在constructor中接收基类,在我的DoWork方法中,property文件是null,尽管在constructor中它不是null。我错过什么了吗?

属性在派生类中为空,但在基类中不为空

您没有将分配给构造函数参数的值保存在任何地方:

public MyFileInfo(string file)
{
    _file = file;
}

根据您如何实例化、调用和打算使用派生类,还需要将参数传递给基构造函数:

public MyFile(MyFileInfo myFileInfo)
    : base(myFileInfo.File)
{
}

传递基类并不一定意味着使用该类的值。你至少需要做这样的事情:

public MyFile(MyFileInfo myFileInfo)
{
    this.File = myFileInfo.File;
}