error CS0029: Cannot implicitly convert type `Manager<T>' to `Manager<Asset>'
我不明白爲什麼我得到上面的編譯時錯誤與下面的代碼。由於與管理者關聯的T類型必須來自資產,它不應該起作用嗎?泛型約束似乎不能在C#中工作
public class Manager<T> where T : Asset
{
public Manager()
{
var t = new Test();
t.Manager = this; //compile-time error
}
}
public class Test
{
public Manager<Asset> Manager;
}
這是行不通的; '經理'不是'經理',除非'T'是'Asset' –
「泛型類中的類型參數默認情況下不是協變的」:實際上,它不會是協變的,不僅僅是默認情況下。差異只適用於接口和委託,而不是類 –
我試着鑄造,但我得到空 – user2800679