[.NET]Constructor Chaining

C# Constructor Chaining

有時Class有多個建構函式時,或許一些初始設定值的Code會重覆到那些建構函式之中,如下,

public class Customer
{
	public Customer()
	{
		AddressList = new List<Address>();
	}

	public Customer(int id)
	{
		this.Id = id;
		AddressList = new List<Address>();
	}

	public int Id { get; private set; }

	public string Name { get; set; }

	public List<Address> AddressList { get; set; }
}

public class Address
{
	public int Id { get; set; }
	public string AddressLine1 { get; set; }
	public string AddressLine2 { get; set; }
}

 

這時就可以使用 Constructor Chaining 來去除程式碼的重覆,如下,

public class Customer
{
	public Customer()
		:this(0)
	{
	}

	public Customer(int id)
	{
		this.Id = id;
		AddressList = new List<Address>();
	}

	public int Id { get; private set; }

	public string Name { get; set; }

	public List<Address> AddressList { get; set; }
}

Constructor Chaining 可以使用 this 去Call其他的建構函式 或用 base 去Call 父層的建構函式!

參考資料

Constructor Chaining in C#

使用建構函式 (C# 程式設計手冊)

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^