4
Dlaczego kowariancja i kontrawariancja nie obsługują typu wartości
IEnumerable<T>jest kowariancją, ale nie obsługuje typu wartości, tylko typ referencyjny. Poniższy prosty kod został pomyślnie skompilowany: IEnumerable<string> strList = new List<string>(); IEnumerable<object> objList = strList; Ale zmiana z stringna intspowoduje błąd kompilacji: IEnumerable<int> intList = new List<int>(); IEnumerable<object> objList = intList; Powód jest wyjaśniony w MSDN : Wariancja dotyczy tylko …