今天遇到一個以前從未遇到過的小問題。我想把一個類別的建構式做成多載型式, 卻突然發現這個看起來很小的問題, 似乎並沒有直覺的做法...
今天遇到一個以前從未遇到過的小問題。我想把一個類別的建構式做成多載型式, 卻突然發現這個看起來很小的問題, 似乎並沒有直覺的做法。
舉例來說, 假設我的建構子是這樣:
class test
{
public test(string colorType) { ... }
}
如果我把建構子冒然加上如下的多載型式, 就會馬上遇到問題:
class test
{
public test(string colorType) { ... }
public test(ColorType colorType)
{
// 如何去呼叫上面那個建構子?
}
}
這裡的 ColorType 是一個 Enum。如果我不想把第一個建構子的程式原封不動的重寫一次, 我怎麼在第二個建構子裡呼叫第一個建構子呢?
後來稍為爬了一下網路, 很快找到解答。我把寫法列在下面, 方便以後參考:
class test
{
public test(string colorType) { ... }
public test(ColorType colorType) : this(colorType.ToString()) { }
}
當然, 我們並不是每次都能套用這種精簡的做法。如果情況更複雜一點, 就必須另外訂方法來做了。