C# 如何从默认构造函数继承
本文关键字:构造函数 继承 默认 | 更新日期: 2023-09-27 18:35:39
我有一个简单的类,有 2 个构造函数。
第一个不带参数的(默认)构造函数构造所有属性,因此一旦实例化此对象,它们就不为 null。
采用 int 参数的第二个构造函数执行更多的逻辑,但它也需要完全按照默认构造函数在设置属性方面执行的操作。
我可以从这个默认构造函数继承,所以我不会复制代码吗?
下面的代码...
public class AuctionVehicle
{
public tbl_Auction DB_Auction { get; set; }
public tbl_Vehicle DB_Vehicle { get; set; }
public List<String> ImageURLs { get; set; }
public List<tbl_Bid> Bids { get; set; }
public int CurrentPrice { get; set; }
#region Constructors
public AuctionVehicle()
{
DB_Auction = new tbl_Auction();
DB_Vehicle = new tbl_Vehicle();
ImageURLs = new List<string>();
ImageURLs = new List<string>();
}
public AuctionVehicle(int AuctionID)
{
// call the first constructors logic without duplication...
// more logic below...
}
}
你可以
这样做:
public AuctionVehicle(int AuctionID) : this()
{
...
}
public AuctionVehicle(int AuctionID) : this()
{
// call the first constructors logic without duplication...
// more logic below...
}
或者将其分解为包含通用逻辑的私有方法。
public AuctionVehicle(int AuctionID)
: this()// call the first constructors logic without duplication...
{
// more logic below...
}
C# 中不允许从构造函数继承
原因:-
如果允许构造函数继承,则可以轻松省略基类构造函数中的必要初始化。这可能会导致难以追踪的严重问题。例如,如果基类的新版本与新构造函数一起出现,则类将自动获得新的构造函数。这可能是灾难性的。