2014/12/14

[C#] C# 建構子多載技巧

今天遇到一個以前從未遇到過的小問題。我想把一個類別的建構式做成多載型式, 卻突然發現這個看起來很小的問題, 似乎並沒有直覺的做法

舉例來說, 假設我的建構子是這樣:

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()) { }
}

當然, 我們並不是每次都能套用這種精簡的做法。如果情況更複雜一點, 就必須另外訂方法來做了。

沒有留言:

張貼留言