에 배열이 다른 동작을하는 방법이 궁금합니다.이 배열은 모두 IList를 구현합니다.이 배열은 IList의 비 공변 성을 나타냅니다 (IList<out T>
으로 정의되지 않음) IList<IPerson>
에 할당 할 때 아래 예제에서 'people3'을 제외한 모든 할당은 ok입니다. personArray의 'people4'의 경우 할당이 작동하는 이유는 무엇입니까?IList에 할당 할 때 배열의 공변 동작
public interface IPerson { }
public class Person : IPerson { }
var personList = new List<Person>();
var personArray = new Person[0];
IList<Person> people1 = personList;
IList<Person> people2 = personArray;
IList<IPerson> people3 = personList;
IList<IPerson> people4 = personArray;
[하지 * 완전히 * 중복 (http://stackoverflow.com/questions/3516619/why을 제공
런타임 오류를 제공합니다 -are-c-sharp-arrays-covariant-and-what-benefits-does-it-bring) 그래서 나는 망치질 않을 것입니다. – Rawling
어떻게 든 관련 질문을 찾기위한 나의 시도는 그 하나를 놓쳤습니다 – CRice
http://blogs.msdn.com/b/ericlippert/archive/2007/10/17/covariance-and-contravariance-in-c-part-two-array- covariance.aspx는 다음과 같이 설명합니다 ... – CRice