Почему понятия «ковариантность» и «контравариантность» применимы при реализации методов интерфейса?
Пример использования примерно такой:
public class SomeClass : ICloneable
{
// Some Code
// Implementing interface method
public object Clone()
{
// Some Clonning Code
}
}
Теперь мой вопросПочему невозможно использовать «SomeClass (как он получен из объекта)» в качестве возвращаемого типа метода Clone (), если мы рассмотрим основы ковариантности и контравариантности?
Может кто-нибудь объяснить мне причину этой реализации Microsoft ????