Ковариантность и Контрвариантность - что это? - C#
Формулировка задачи:
Прошу помочь мне объяснить эти два понятия, ещё читая Шилдта не понял, что эта за возможность такая, а теперь столкнулся c подобными темами в другой книге, например:
И в чем здесь заключается ковариантность интерфейса?
А уж к контрвариантности обобщенных интерфейсов я и переходить боюсь, застрял на этом теме уже дней 5.Может, вся проблема в том, что я не очень понимаю суть этих 2 магических понятий.
Ковариантность обобщенных интерфейсов:
public interface IIndex<out T> { Т this[int index] { get; } int Count { get; } , } public class RectangleCollection: IIndex<Rectangle> { private Rectangle[] data = new Rectangle[3] { new Rectangle { Height=2, Width=5}, new Rectangle { Height=3, Width=7}, new Rectangle { Height=4.5, Width=2.9} }; public static RectangleCollection GetRectangles () { return new RectangleCollection (); } public Rectangle this[int index] { get { if (index < 0 || index > data.Length) throw new ArgumentOutOfRangeException("index") ; return data[index]; } } public int Count { get { return data.Length; } } } static void Main() { IIndex<Rectangle> rectangles = RectangleCollection.GetRectangles(); IIndex<Shape> shapes = rectangles; for (int i = 0; i < shapes.Count; i++) { Console.WriteLine(shapes[i]); }}
Решение задачи: «Ковариантность и Контрвариантность - что это?»
textual
Листинг программы
public interface IIndex<T> { Т this[int index] { get; set;} int Count { get; } , }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д