2

我有一个带有 2 个构造函数的简单类。

第一个不带参数的(默认)构造函数构造所有属性,因此一旦实例化该对象,它们就不为空。

第二个采用 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...
    }
}
4

4 回答 4

4
public AuctionVehicle(int AuctionID) : this()
    {
        // call the first constructors logic without duplication...
        // more logic below...
    }

或者将其分解为包含通用逻辑的私有方法。

于 2013-10-16T11:22:01.083 回答
4

你可以这样做:

public AuctionVehicle(int AuctionID) : this() 
{
   ...
}
于 2013-10-16T11:22:21.603 回答
2
public AuctionVehicle(int AuctionID)
    : this()// call the first constructors logic without duplication...
{
    // more logic below...
}
于 2013-10-16T11:22:32.420 回答
0

c#中不允许从构造函数继承

原因 :-

如果允许构造函数继承,那么基类构造函数中必要的初始化可能很容易被省略。这可能会导致难以追踪的严重问题。例如,如果一个新版本的基类出现了一个新的构造函数,你的类会自动获得一个新的构造函数。这可能是灾难性的。

于 2013-10-16T11:24:32.533 回答