Про вариантность отношении
От: Hamlet Армения  
Дата: 24.11.12 12:59
Оценка:
Привет. Вот, пролистал блог Ерика Липперта и наталкнулся на статью 3-х летней давности (статью можно найти здесь),и обратил внимание на одну фразу:

Now consider a projection from types to types. Say, the projection "T goes to IEnumerable<T>". That is, we have a projection that takes a type, say, Giraffe, and gives you back a new type, IEnumerable<Giraffe>. Is that projection covariant in C# 4? Yes. It preserves the direction of ordering. A Giraffe may be assigned to a variable of type Animal, and therefore an sequence of Giraffes may be assigned to a variable that can hold a sequence of Animals.


А разве не нарушена причино-седственная связь в этой фразе?
Re: Про вариантность отношении
От: samius Япония http://sams-tricks.blogspot.com
Дата: 24.11.12 18:06
Оценка:
Здравствуйте, Hamlet, Вы писали:

H>

A Giraffe may be assigned to a variable of type Animal, and therefore an sequence of Giraffes may be assigned to a variable that can hold a sequence of Animals.


H>А разве не нарушена причино-седственная связь в этой фразе?

Согласен, нарушена. Therefore следует трактовать как "мы тут подумали и решили сделать так, что бы". При этом учесть особенную природу интерфейса IEnumerable<T>, т.к. не для всех интерфейсов будет справедливо. C ICollection<T> уже не работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.