【发布时间】:2013-10-24 11:38:50
【问题描述】:
我有一个带有 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...
}
}
【问题讨论】:
-
将代码移动到另一个函数,比如 init 并从两个构造函数中调用它。但是,嘿,这里的继承不是正确的词。
-
这不是继承,它被称为构造函数链或构造函数伸缩。
-
@Jack 有效,除非您设置的字段是
readonly,否则它们不能从Init()设置
标签: c# oop constructor default-constructor