Ковариантность и Контрвариантность - что это? - C#

Узнай цену своей работы

Формулировка задачи:

Прошу помочь мне объяснить эти два понятия, ещё читая Шилдта не понял, что эта за возможность такая, а теперь столкнулся c подобными темами в другой книге, например:

Ковариантность обобщенных интерфейсов:

Листинг программы
  1. public interface IIndex<out T>
  2. {
  3. Т this[int index] { get; }
  4. int Count { get; } ,
  5. }
  6. public class RectangleCollection: IIndex<Rectangle>
  7. {
  8. private Rectangle[] data = new Rectangle[3]
  9. {
  10. new Rectangle { Height=2, Width=5},
  11. new Rectangle { Height=3, Width=7},
  12. new Rectangle { Height=4.5, Width=2.9}
  13. };
  14. public static RectangleCollection GetRectangles ()
  15. {
  16. return new RectangleCollection ();
  17. }
  18. public Rectangle this[int index]
  19. {
  20. get
  21. {
  22. if (index < 0 || index > data.Length)
  23. throw new ArgumentOutOfRangeException("index") ;
  24. return data[index];
  25. }
  26. }
  27. public int Count
  28. {
  29. get
  30. {
  31. return data.Length;
  32. }
  33. }
  34. }
  35. static void Main()
  36. {
  37. IIndex<Rectangle> rectangles = RectangleCollection.GetRectangles();
  38. IIndex<Shape> shapes = rectangles;
  39. for (int i = 0; i < shapes.Count; i++)
  40. {
  41. Console.WriteLine(shapes[i]);
  42. }}
И в чем здесь заключается ковариантность интерфейса? А уж к контрвариантности обобщенных интерфейсов я и переходить боюсь, застрял на этом теме уже дней 5.Может, вся проблема в том, что я не очень понимаю суть этих 2 магических понятий.

Решение задачи: «Ковариантность и Контрвариантность - что это?»

textual
Листинг программы
  1. public interface IIndex<T>
  2. {
  3.    Т this[int index] { get; set;}
  4.    int Count { get; } ,
  5. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы