我有一個簡單的代碼位,我想根據某些數據設置一個類型,但是我無法在手前聲明它,因爲我不知道它將設置爲何種類型:保持範圍變化的類型
if(data[i].on == true){
Type1 temp = (Type1)data[i];
} else {
Type2 temp = (Type2)data[i];
}
// scope lost
temp.call();
我該如何保持範圍?這有點令人困惑,因爲我不知道我需要在if else語句之前設置temp
。
C#是否有解決方案?
你有Type1,Type2的接口嗎? –
他們繼承,但即時通訊不使用接口。 Type2繼承了type1,因此.call()將始終有效。他們都繼承了一個基類。 – Sir
如果他們都有call(),那麼在檢查之前將變量聲明爲null,並使用接口或基類。如果這是不可能的,那麼使用一個像Action這樣的委託,並在創建類型時分配它。 –