属性在派生类中为空,但在基类中不为空
本文关键字:基类 属性 派生 | 更新日期: 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;
}