比方說,我有兩個類:如何在類實例中調用常用函數?
class Batman
{
public void Robin(){...}
public void Jump(){...}
}
class Superman
{
public void Kryptonie(){...}
public void Jump(){...}
}
現在,我有這些類的一個實例:
public object Crossover()
{
var batman = new Batman();
var superman = new Superman();
return superman;
}
我不知道實例,它類的交叉會返回,也可能是蝙蝠俠或超人。
var someVariableName = Crossover(); //I don't know if this contains an instance of Superman or Batman;
//I do know that no matter which class instance is returned, it will always contain a function named Jump which i want to trigger:
someVariableName.Jump();
現在我知道我可以這樣做:
if (someVariableName.GetType() == typeof(Superman))
{
((Superman) someVariableName).Jump()
}
但有觸發跳轉功能,而無需手動檢查每種類型的if..else的方式..,當我知道保存在該變量中的類的實例將始終包含一個Jump函數?
爲'Crossover'返回'object',該代碼'VAR someVariableName =交叉(); someVariableName.Jump();'只是不會編譯。最好是創建'interface IJumpingEntity {void Jump()}',讓'Batman'和'Superman'實現這個接口,並從'Crossover'返回接口類型的對象。 – 2014-10-03 13:21:31
如果你有一個基類,蝙蝠俠和超人都繼承from,把Jump方法放在那個類中,然後Crossover返回一個基類類型的對象? – 2014-10-03 13:22:12
親愛的15K +代表回答者,你確定這個問題是獨一無二的嗎?難道你不應該花幾秒鐘找到一個參考問題,而不是回答它? – CodeCaster 2014-10-03 13:25:11