是否有可能在C#中重載構造函數,以便程序在參數是派生類時選擇使用一個構造函數,如果它是基類,則選擇不同的構造函數。例如區分方法參數中的基類和派生類
class BaseClass {...}
class DerivedClass : BaseClass {...}
class foo
{
public foo(DerivedClass bar)
{
//do one thing
}
public foo(BaseClass bar)
{
//do another
}
}
也就是說,我希望程序根據對象類型選擇正確的構造函數。
你試過了嗎? – Blorgbeard
這有一個非常糟糕的代碼氣味,好像你可能試圖違反https://en.wikipedia.org/wiki/Liskov_substitution_principle – itsme86
你:_基於對象類型_你的意思是聲明類型的參數(也稱爲作爲編譯時類型),還是實際的運行時類型?解決方案取決於此。如果您想基於編譯時類型進行「分支」,您顯示的代碼已經完成了這項工作。 –