C#協變與抗變

協變與抗變
主要用於引用類型泛型接口委託中的轉換


舉例:
Animal
Cat:Animal

協變 Cat向上轉成Animal
out 關鍵字 用於返回類型 參考 Func<out T>

抗變 Animal轉成Cat
in 關鍵字 只能用於參數  參考 Action<in T>

像List<T> T不用同時用於參數類型又做爲返回類型


List<object> a;
List<string> b;
a= b;
b 不能賦組a 因爲 object與string是繼承關係 而 List<object> 與List<string> 無繼承關係 

類型轉換的安全問題
Cat[]可轉成Animal[] 但Animal裏可也可以放Dog 所以從Animal到Cat不一定成功
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章