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...
    }
}

C# 如何从默认构造函数继承

你可以

这样做:

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# 中不允许从构造函数继承

原因:-

如果允许构造函数继承,则可以轻松省略基类构造函数中的必要初始化。这可能会导致难以追踪的严重问题。例如,如果基类的新版本与新构造函数一起出现,则类将自动获得新的构造函数。这可能是灾难性的。