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

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

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

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

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

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]); 
}}
И в чем здесь заключается ковариантность интерфейса? А уж к контрвариантности обобщенных интерфейсов я и переходить боюсь, застрял на этом теме уже дней 5.Может, вся проблема в том, что я не очень понимаю суть этих 2 магических понятий.

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

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

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


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

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

8   голосов , оценка 4.375 из 5
Похожие ответы