2010-08-18 91 views
0

我有以下兩個構造在我的基類:爲什麼當期望單參數構造函數時調用兩個參數構造函數?

protected ExternalSystemException(params Object[] args) 
    : this(null, null, args) {} 

protected ExternalSystemException(String propertyKeySuffix, 
    params Object[] args) : this(propertyKeySuffix, null, args) {} 

我的子類有以下構造函數:

public InvalidPathToOutputFiles(string invalidPath) 
    : base(invalidPath) {} 

我的客戶端邏輯實例的子類,像這樣:

throw new ChildClass("goofy"); 

當我通過邏輯我意外地結束在基礎構造函數與參數(String propertyKeySuffix, params Object[] args)。我期望調用另一個基類構造函數,即(params Object[] args)

有人可以告訴我爲什麼會發生這種情況嗎?

+0

只要我點擊提交,我就想拿回這個。 – Don 2010-08-18 21:24:40

回答

8

string重載是與您提供給構造函數的類型最匹配的。參數是可選的(對象不明確),因此,由於第二次過載的類型爲string,與您傳遞的string類型相匹配,所以會選擇第二個過載。