Przyjmijmy, mam interfejs i klasa:Dlaczego kowariancji nie działa metoda rodzajowa
public interface ITree {}
public class Tree : ITree {}
Jak IEnumerable<T>
jest kowariantna linia kodu poniżej jest skompilowany z powodzeniem:
IEnumerable<ITree> trees = new List<Tree>();
ale kiedy umieść go w ogólnej metodzie:
public void Do<T>() where T : ITree
{
IEnumerable<ITree> trees = new List<T>();
}
I skompilowany błąd z kompilatora:
Błąd 1 Nie można niejawnie przekonwertować typu "System.Collections.Generic.List" na "System.Collections.Generic.IEnumerable". Wyraźne konwersji istnieje (czy brakuje obsady?) D: \ lab \ Lab.General \ Lab.General \ Program.cs 83 40 Lab.General
Dlaczego kowariancji nie działa w tym przypadku?
możliwe duplikat [? Czy to jest bug kowariancji w C# 4] (http://stackoverflow.com/questions/2783233/is-this-a-covariance -bug-in-c-sharp-4) – nawfal